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个项目?
答案 0 :(得分:3)
你能不能做这样的事情:(基于例子here)
db.thread.update(
{ _id: ObjectId("5191039d48ef54c24a000002") },
{ $push: { messages: { $each : [
{ message },
],
$sort: { sent_at: 1 },
$slice: -50
}
}
}
)