1

私はMongoid2でこのクエリを実行しましたが、正常に機能していました。

GlobalWord.collection.update({"_id" => "foo"}, {"$inc" => {:count => 1}}, :upsert => true)

GlobalWordIDを持つを見つけた場合はfoo、カウントを1ずつ更新します。それ以外の場合は、IDfooとカウントが1のドキュメントを作成します。mongoid3でそれに相当するものは見つかりませんでした。

編集:クエリをアトミックにする必要があります

4

3 に答える 3

1

私はこれがうまくいくと信じています:

GlobalWord.find("_id": "foo").upsert("$inc": {count: 1})

しかし、私はそれをテストしませんでした。私の電話にはMongoDBがありません:)

于 2012-07-30T17:29:06.203 に答える
1

私はGlobalWord.create(:id => word).inc(:count、1)を使用しましたが、これはアトミックなようです

于 2012-08-13T10:23:05.077 に答える
0

ドキュメントrdocから

GlobalWord.new(id: word).upsert("$inc" => {count: 1})

于 2012-09-08T16:27:10.137 に答える