15

次の形式のドキュメントがあります。

{
"_id" : ObjectId("4d2d8deff4e6c1d71fc29a07"),
"user_id" : "714638ba-2e08-2168-2b99-00002f3d43c0",
"events" : [
        {
                "profile" : 10,
                "data" : "....."
        }
        {
                "profile" : 10,
                "data" : "....."
        }
        {
                "profile" : 20,
                "data" : "....."
        }
        ...
   ]
 }

なんらかの発言をしたいのですがupsert。そのようなドキュメントがすでに存在する場合はeventevents配列にを追加する必要があります。それ以外の場合は、アイテムを使用してドキュメントを作成する必要があります。user_idevent

それはできますか?

4

1 に答える 1

27

Mongo で upsert を実行できます。Mongo docの「Modifiers を使用した Upserts」を参照してください。

修飾子操作で upsert を使用できます。このような場合、修飾子が更新基準メンバーに適用され、結果のオブジェクトが挿入されます。

必要なクエリは次のようになります。

db.events.update( { "user_id" : "714638ba-2e08-2168-2b99-00002f3d43c0" }, 
{ $push : { "events" : { "profile" : 10, "data" : "X"}}}, {"upsert" : true});
于 2011-01-23T16:49:23.213 に答える