2つの配列をアンワインドするMongoDBクエリ
巻き戻すとは、入力ドキュメントから配列フィールドを分解して、各要素のドキュメントを出力することを意味します。
配列をアンワインドするには、MongoDBアグリゲーションで$unwindを使用します。まず、ドキュメントを使用してコレクションを作成しましょう-
> db.demo387.insertOne( ... { ... ... "Name" : "101", ... "Details1" : [ ... {Value:100, Value1:50, Value2:40}, ... {Value:200}, ... {Value:300} ... ], ... "Details" : [ ... {Value:100, Value1:30, Value2:26}, ... {Value:200}, ... {Value:300} ... ] ... } ... ); { "acknowledged" : true, "insertedId" : ObjectId("5e5d197022064be7ab44e7f8") }
find()メソッドを使用してコレクションからすべてのドキュメントを表示する-
> db.demo387.find().pretty();
これにより、次の出力が生成されます-
{ "_id" : ObjectId("5e5d197022064be7ab44e7f8"), "Name" : "101", "Details1" : [ { "Value" : 100, "Value1" : 50, "Value2" : 40 }, { "Value" : 200 }, { "Value" : 300 } ], "Details" : [ { "Value" : 100, "Value1" : 30, "Value2" : 26 }, { "Value" : 200 }, { "Value" : 300 } ] }
以下は、複数の配列を持つドキュメントを集約するためのクエリです-
> db.demo387.aggregate([ ... { "$unwind": "$Details1" }, ... { "$unwind": "$Details" }, ... { "$match": { "$expr": ... { "$eq": ["$Details1.Value", "$Details.Value"] } ... }} ... ])
これにより、次の出力が生成されます-
{ "_id" : ObjectId("5e5d197022064be7ab44e7f8"), "Name" : "101", "Details1" : { "Value" : 100, "Value1" : 50, "Value2" : 40 }, "Details" : { "Value" : 100, "Value1" : 30, "Value2" : 26 } } { "_id" : ObjectId("5e5d197022064be7ab44e7f8"), "Name" : "101", "Details1" : { "Value" : 200 }, "Details" : { "Value" : 200 } } { "_id" : ObjectId("5e5d197022064be7ab44e7f8"), "Name" : "101", "Details1" : { "Value" : 300 }, "Details" : { "Value" : 300 } }
-
_idでグループ化するMongoDBクエリ
MongoDBで_idでグループ化するには、$groupを使用します。ドキュメントを使用してコレクションを作成しましょう- > db.demo529.insertOne({"Score":10});{ "acknowledged" : true, "insertedId" : ObjectId("5e8b1d5bef4dcbee04fbbbe4") } > db.demo529.insertOne({"Score":20});{ &
-
コレクションの名前を変更するMongoDBクエリ?
MongoDBでコレクションの名前を変更するには、renameCollection()を使用します。ドキュメントを使用してコレクションを作成しましょう- > db.demo690.insertOne({_id:101,Name:"Sam"}); { "acknowledged" : true, "insertedId" : 101 } > db.demo690.insertOne({_id:102,Name:"Mike"}); { "acknowledged" : true, &qu