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

私が正しく理解していれば、上限付きコレクションが必要です。 http://www.mongodb.org/display/DOCS/Capped+Collections

于 2012-07-24T22:04:12.943 に答える
0

結局のところ、これはMongoDBの長年の問題であり、MongoDB2.4リリースで$slice演算子を使用して追加されました。

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 に答える