2016-09-01 9 views
2

Ich bin neu in MongoDB und versuche, ein Array in einer Datenbank neu anzuordnen.Array in MongoDB neu anordnen

Hier ist das Schema:

headline: String, 
Galleryslides: [{type: ObjectId, ref: 'Galleryslide'}], 

Hier ist die Logik ich benutze. CorrectOrder ist übrigens ein Array mit der neuen Reihenfolge von IDs für die DB.

Gallery.findById(req.params.galleryId, function(err, gallery) { 
    var newArr = []; 
    req.body.ids.forEach(function(id, index) { 
     newArr[index] = Galleryslides.find({"_id" : id}); 
    }); 
    gallery.Galleryslides = newArr; 
    gallery.save(function() { 
     res.json({status: 'ok'}); 
    }); 
}); 

Wenn dies ausgeführt wird, passiert nichts - die Reihenfolge des Arrays in der DB ändert sich nicht. Weißt du einen besseren Weg dies zu tun?

Antwort

0

In Mongodb sind die Datensätze in natural order sortiert. Sie sollten sie in der gleichen Reihenfolge erhalten, die Sie eingefügt haben, aber das ist nicht garantiert.

Wie die docs sagen:

Diese Reihenfolge eine interne Implementierung Funktion ist, und Sie sollten nicht auf eine bestimmte Struktur innerhalb darauf verlassen.

Wenn Sie von der _id Feld sortieren möchten, können Sie das tun (es wird durch die _id Index sortieren):

Gallery.find().sort({ "_id": 1 })