MongoDBで多くのドキュメントをアップサートする
多くのドキュメントをアップサートするには、UPSERT()とUPDATE()を使用します。ドキュメントを使用してコレクションを作成しましょう-
> db.demo425.insertOne({"Name":"Chris","Age":21}); { "acknowledged" : true, "insertedId" : ObjectId("5e74ee4fbbc41e36cc3cae6c") } > db.demo425.insertOne({"Name":"David","Age":23}); { "acknowledged" : true, "insertedId" : ObjectId("5e74ee56bbc41e36cc3cae6d") } > db.demo425.insertOne({"Name":"Chris","Age":21}); { "acknowledged" : true, "insertedId" : ObjectId("5e74ee57bbc41e36cc3cae6e") } > db.demo425.insertOne({"Name":"Chris","Age":21}); { "acknowledged" : true, "insertedId" : ObjectId("5e74ee5cbbc41e36cc3cae6f") }
find()メソッドを使用してコレクションからすべてのドキュメントを表示する-
> db.demo425.find();
これにより、次の出力が生成されます-
{ "_id" : ObjectId("5e74ee4fbbc41e36cc3cae6c"), "Name" : "Chris", "Age" : 21 } { "_id" : ObjectId("5e74ee56bbc41e36cc3cae6d"), "Name" : "David", "Age" : 23 } { "_id" : ObjectId("5e74ee57bbc41e36cc3cae6e"), "Name" : "Chris", "Age" : 21 } { "_id" : ObjectId("5e74ee5cbbc41e36cc3cae6f"), "Name" : "Chris", "Age" : 21 }
以下は、MongoDBで多くのドキュメントをアップサートするためのクエリです-
> var b1 = db.demo425.initializeUnorderedBulkOp(); > b1.find( { Name: "Chris" } ).upsert().update( ... { ... $setOnInsert: { id:101}, ... $set: { Name: "Robert", Age:23 } ... } ... ); > b1.execute(); BulkWriteResult({ "writeErrors" : [ ], "writeConcernErrors" : [ ], "nInserted" : 0, "nUpserted" : 0, "nMatched" : 3, "nModified" : 3, "nRemoved" : 0, "upserted" : [ ] })
find()メソッドを使用してコレクションからすべてのドキュメントを表示する-
> db.demo425.find();
これにより、次の出力が生成されます-
{ "_id" : ObjectId("5e74ee4fbbc41e36cc3cae6c"), "Name" : "Robert", "Age" : 23 } { "_id" : ObjectId("5e74ee56bbc41e36cc3cae6d"), "Name" : "David", "Age" : 23 } { "_id" : ObjectId("5e74ee57bbc41e36cc3cae6e"), "Name" : "Robert", "Age" : 23 } { "_id" : ObjectId("5e74ee5cbbc41e36cc3cae6f"), "Name" : "Robert", "Age" : 23 }
-
MongoDBドキュメントのnull値を無視する
MongoDBでnull値を無視するには、 $ ne:nullを使用します 集約()で。ドキュメントを使用してコレクションを作成しましょう- > db.demo722.insertOne( ... { ... id:101, ... details: [ ... { Name:""}, ... { Name: "Da
-
MongoDBで1つのクエリで多くのドキュメントを更新するにはどうすればよいですか?
1つのクエリで多くのドキュメントを更新するには、MongoDBでbulkWrite()を使用します。ドキュメントを使用してコレクションを作成しましょう- > db.demo760.insertOne({id:1,details:{Value1:100,Value2:50}}); { "acknowledged" : true, "insertedId" : ObjectId("5eb0309f5637cd592b2a4aee") } > db.demo760.insert