2016-09-01 4 views
2

Я новичок в MongoDB и пытаюсь изменить порядок массива в db.Переупорядочить массив в MongoDB

Вот схема:

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

Вот логика, я использую. Кстати, correctOrder - это массив с новым порядком идентификаторов для БД.

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

Когда это выполняется, ничего не происходит - порядок массива в БД не изменяется. Знаешь, лучший способ сделать это?

ответ

0

В mongodb записи отсортированы по natural order. Вы должны получить их в том же порядке, который вы вставили, но это не гарантировано.

Как документы говорят:

Это упорядочение является внутренней особенностью реализации, и вы должны не полагаться на какой-либо конкретной структуры в ней.

Если вы хотите отсортировать по _id поле, вы можете сделать это (он будет сортировать по индексу _ID):

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