:
db.collection.update(query, update, options)
は、既存のドキュメントまたはコレクション内のドキュメントを変更します。このメソッドは、更新パラメータに応じて、既存のドキュメントまたはドキュメントの特定のフィールドを変更するか、既存のドキュメントを完全に置き換えることができます。
意味は、更新を使用して複数のドキュメントをアップセルできるということです。
まず、マップから値だけを含む配列を作成する必要があります。
const arrayOfValues = ['value_01', 'values_02'];
は、その後、更新方法にアップサート+マルチオプションを使用する必要があります。
db.foo.update({value: { $in: arrayOfValues}}, {$inc: {count:1}}, { upsert: true, multi: true });
テスト出力:
> db.createCollection("test");
{ "ok" : 1 }
> db.test.insertMany([{value: "a"}, {value: "b"}, {value: "c"}];
...);
2017-12-31T12:12:18.040+0200 E QUERY [thread1] SyntaxError: missing) after argument list @(shell):1:61
> db.test.insertMany([{value: "a"}, {value: "b"}, {value: "c"}]);
{
"acknowledged" : true,
"insertedIds" : [
ObjectId("5a48b8061b98cc5ac252e435"),
ObjectId("5a48b8061b98cc5ac252e436"),
ObjectId("5a48b8061b98cc5ac252e437")
]
}
> db.test.find();
{ "_id" : ObjectId("5a48b8061b98cc5ac252e435"), "value" : "a" }
{ "_id" : ObjectId("5a48b8061b98cc5ac252e436"), "value" : "b" }
{ "_id" : ObjectId("5a48b8061b98cc5ac252e437"), "value" : "c" }
> db.test.update({value: { $in: ["a", "b", "c"]}}, {$inc: {count:1}}, { upsert: true, multi: true });
WriteResult({ "nMatched" : 3, "nUpserted" : 0, "nModified" : 3 })
> db.test.find();
{ "_id" : ObjectId("5a48b8061b98cc5ac252e435"), "value" : "a", "count" : 1 }
{ "_id" : ObjectId("5a48b8061b98cc5ac252e436"), "value" : "b", "count" : 1 }
{ "_id" : ObjectId("5a48b8061b98cc5ac252e437"), "value" : "c", "count" : 1 }
> db.test.update({value: { $in: ["a", "b", "c"]}}, {$inc: {count:1}}, { upsert: true, multi: true });
WriteResult({ "nMatched" : 3, "nUpserted" : 0, "nModified" : 3 })
> db.test.find();
{ "_id" : ObjectId("5a48b8061b98cc5ac252e435"), "value" : "a", "count" : 2 }
{ "_id" : ObjectId("5a48b8061b98cc5ac252e436"), "value" : "b", "count" : 2 }
{ "_id" : ObjectId("5a48b8061b98cc5ac252e437"), "value" : "c", "count" : 2 }
> db.test.update({value: { $in: ["a", "b", "c"]}}, {$inc: {count:1}}, { upsert: true, multi: true });
WriteResult({ "nMatched" : 3, "nUpserted" : 0, "nModified" : 3 })
は、私は、それが
実際:)役立ちましたホープ私はjavascriptでそれを行う方法を知ることができればそれは素晴らしかったので、javascriptで動作していた。しかし、それは大丈夫です、少なくとも今どこから始めるべきか分かります。 –
あなたはあなたの答えの源を教えてください。本当に役立つでしょうか。 –
@Yochai_Akokaこのコマンドを実行しようとしました。db.test.update({value:{$ in:["b"、 "a"]}}、{$ inc:{count:1}}、{upsert:true 、multi:true}) 'しかし、データベースには何もアップしません。私のdbには既に '' value: ''が 'count:1'であったので、' 'value:" b "'を 'count:1'にアップし、' value: "aのカウントを増やしたいと思っていました。すでにdbに存在する値の数が増えます。 –