在MongoDB中重新排序数组

时间:2016-09-01 00:44:52

标签: javascript mongodb

我是MongoDB的新手,并尝试重新排序数据库中的数组。

这是架构:

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

这是我使用的逻辑。顺便说一句,correctOrder是一个数组,其中包含新的数据库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'});
    });
});

当它运行时,没有任何反应 - 数据库中数组的顺序不会改变。 D'你知道更好的方法吗?

1 个答案:

答案 0 :(得分:0)

在mongodb中,记录按natural order排序。你应该按照你输入的顺序得到它们,但是不能保证。

就像文档说的那样:

  

此排序是内部实现功能,您应该这样做   不依赖于其中的任何特定结构。

如果你想按_id字段排序,你可以这样做(它将按_id索引排序):

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