限制多个MongoDB数组大小

时间:2012-07-24 17:17:44

标签: mongodb atomic fixed

我有一个文档列出了按主题分隔的作者的帖子ID。这将产生如下文档:

{
    _id: "sdkafjsadkfjads3023",
    Author: "SomeGuy"
    RecentPosts: {
        "topic-1": {
            Count: 4,
            Posts: ["postitemid1","postitemid2","postitemid2","postitemid3"]
        }
        "topic-2": {
            Count: 3
            Posts: ["postitem5","postitem6","postitem8"]
        }
    }
}

我在大多数时间都在同一个更新中对每个帖子数组进行原子推送。我想要做的是始终将上面的数组限制为10个项目。这样,任何时候我都会对相同的主题/帖子做推..我甚至可能会问,或者我应该采取不同的方式吗?

提前致谢

2 个答案:

答案 0 :(得分:0)

如果我理解正确上限收藏是你想要的。 http://www.mongodb.org/display/DOCS/Capped+Collections

答案 1 :(得分:0)

事实证明,这是MongoDB中一个长期存在的问题,自从使用$ slice运算符添加到MongoDB 2.4版本中以后。

db.students.update(
                { _id: 1 },
                { $push: { scores: { $each : [
                                               { attempt: 3, score: 7 },
                                               { attempt: 4, score: 4 }
                                             ],
                                     $sort: { score: 1 },
                                     $slice: -3
                                   }
                          }
                }
              )

http://docs.mongodb.org/manual/tutorial/limit-number-of-elements-in-updated-array/