有没有办法在mongo文档中维护有序数组?

时间:2016-11-30 09:10:04

标签: arrays ruby mongodb

我有一个时间字段的mongo文档:

field :times, type: Array, default: []`

目前,在更新时,我将再次使用,找到它的位置并在保存时覆盖整个数组。有一个更好的方法吗?有没有办法通过Mongo以某种方式自动执行此操作?

2 个答案:

答案 0 :(得分:0)

您可以在$sort

中使用$push
$push: {
    innerElement: {
        $each: [
            {
                "new-entry": ObjectId("xxxxxxx"),
                "createdOn": ISODate()
            }
        ],

        $slice:-10,

        $sort: {'createdOn': 1}
    }

答案 1 :(得分:0)

$position中执行$push时,您可以使用update(...)运算符:

>db.students.save({ "_id" : 1, "scores" : [  50,  60,  70,  100 ] })

>db.students.update(
   { _id: 1 },
   {
     $push: {
        scores: {
           $each: [ 20, 30 ],
           $position: 2
        }
     }
   }
)

> db.students.find()
{ "_id" : 1, "scores" : [  50,  60,  20,  30,  70,  100 ] }

请参阅 - https://docs.mongodb.com/manual/reference/operator/update/position/#up._S_position