2016-09-01 8 views
2

MongoDBが新しく、dbの配列を並べ替えようとしています。ここでMongoDBの並べ替え配列

は、スキーマです:

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

ここで私が使用しているロジックがあります。ちなみに、correctOrderは、DBのIDの新しい順序を持つ配列です。

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'}); 
    }); 
}); 

これを実行すると、何も起こりません.DB内の配列の順序は変更されません。これを行うより良い方法を知っていますか?

答えて

0

mongodbでは、レコードはnatural orderにソートされています。あなたが挿入したのと同じ順序でそれらを取得する必要がありますが、それは保証されていません。 Docsのような

は言う:

この順序は、内部実装の機能であり、あなたが その内の任意の特定の構造に依存しないでください。

あなたは_idフィールドでソートしたい場合は、あなたがそれを行うことができます(これは_idインデックスでソートされます):

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