0

我有一个文档,其中列出了按主题分隔的作者的帖子项目 ID。这会产生如下文档:

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

大多数时候,我在同一个更新中对这些帖子数组中的每一个进行原子推送。我想要做的是始终将上面的数组限制为 10 个项目。这样,每当我对相同的主题/帖子进行推送时。我要问的是可能的,还是我应该以不同的方式做到这一点?

提前致谢

4

2 回答 2

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/

于 2013-07-30T03:51:55.633 回答
0

如果我理解正确的话, Capped Collections就是你想要的。 http://www.mongodb.org/display/DOCS/Capped+Collections

于 2012-07-24T22:04:12.943 回答