の配列の値があります。の配列の値の一部が既にデータベースに存在している可能性があります。私はupsert
新しい値とを増やすには、古い値のを増やしてください。これを行うための 一つの方法は次のとおりです。updateコマンドおよびインクリメント回数を使用してデータベースに存在するすべての値のmongoDBに複数の文書をアップする
。
db.test.update({ link: {$in: ["A", "B"]}}, {$inc: {count: 1}}, {upsert: true, multi:true})
私のデータベースに存在しないすべての値については、それぞれの値をチェックしてデータベースにアップカウントしてください。
2番目の手順でネットワークに負荷がかかる可能性があります。 1つのコマンドで2番目のステップを実行する方法はありますか?私のデータベースの
初期状態:
{ "_id" : ObjectId("5a45f97f84527190e1f28cb7"), "link" : "A", "count" : 3 }
、私は次のように配列を持っている:const values = ['A', 'B', 'C']
は今、私のようなものを持ちたい、このを検討たとえば
これは:
{"_id": ObjectId("abc"), "link": "A", "count" : 4},
{"_id": ObjectId("xyz"), "link": "B", "count" : 1},
{"_id": ObjectId("fgh"), "link": "C", "count" : 1}
あなたが言及している第二のステップは、1つのコマンドだけで更新クエリでtrueにアップサート有効にすることによってで行われ、そうではありませんか?あなたの質問を理解できません – divine
@divineすべての値について、それがデータベースに存在するかどうかをチェックする必要があります。そうでない場合は、その値を新しい文書として挿入する必要があります。しかし、挿入したいドキュメントがたくさんあるので、 'insertMany()'のようなものがあれば、配列からすべての値をアップアップすると思っていました。 私が与えた例を参照してください。 –
@divine 2番目のステップでは、 'update()'コマンドを使用すると、**単一のクエリ**が必要となり、ドキュメントにすでに存在する多くのドキュメントを更新するか、または1つを挿入します。私が欲しいのは、データベース内の存在に応じて、多くの文書を挿入したいということです(存在する場合は増分カウント、それ以外の場合は挿入します)。 –