MongoDB 2.4中的上限数组

时间:2013-05-13 16:07:43

标签: mongodb mongodb-query nosql

MongoDB 2.4引入了Capped Arrays:
http://docs.mongodb.org/manual/release-notes/2.4/#limit-number-of-elements-in-an-array

考虑以下文档结构(使用嵌套数组):

thread { "_id" : ObjectId("5191039d48ef54c24a000002"), "messages" : [ {"content" : "hello", "sent_at": "ISODate("2013-05-13T15:15:44.162Z")}, {"content" : "hi again", "sent_at": "ISODate("2013-05-13T15:15:48.162Z")} ] }

使用新的上限数组功能,如何在添加新消息(例如第51个)时删除最旧的消息?

换句话说,如何将嵌套数组“消息”限制为50个项目?

1 个答案:

答案 0 :(得分:3)

你能不能做这样的事情:(基于例子here

db.thread.update(
                    { _id: ObjectId("5191039d48ef54c24a000002") },
                    { $push: { messages: { $each : [
                                                   { message },
                                                 ],
                                         $sort: { sent_at: 1 },
                                         $slice: -50
                                       }
                              }
                    }
                  )