$ addFieldsパイプラインを使用し、MongoDB$filterオペレーターで実行します
まず、ドキュメントを使用してコレクションを作成しましょう-
> db.demo118.insertOne( ... { ... "Id" : "101", ... "Name" : "Chris", ... "Subjects" : [ ... "MySQL", ... "MongoDB", ... "Java" ... ], ... "Details" : [ ... { ... "Name" : "David", ... S:"MongoDB" ... }, ... { ... "Name" : "Bob", ... S:"Python" ... } ... ] ... } ... ); { "acknowledged" : true, "insertedId" : ObjectId("5e2f0c0cd8f64a552dae6364") }
find()メソッドを使用してコレクションからすべてのドキュメントを表示する-
> db.demo118.find();
これにより、次の出力が生成されます-
{ "_id" : ObjectId("5e2f0c0cd8f64a552dae6364"), "Id" : "101", "Name" : "Chris", "Subjects" : [ "MySQL", "MongoDB", "Java" ], "Details" : [ { "Name" : "David", "S" : "MongoDB" }, { "Name" : "Bob", "S" : "Python" } ] }
以下は、$addFieldsパイプラインを使用するためのクエリです-
> db.demo118.aggregate([ ... { ... "$addFields": { ... "Details": { ... "$filter": { ... "input": "$Details", ... "as": "out", ... "cond": { "$in": ["$$out.S", "$Subjects"] } ... } ... } ... } ... } ... ]).pretty();
これにより、次の出力が生成されます-
{ "_id" : ObjectId("5e2f0c0cd8f64a552dae6364"), "Id" : "101", "Name" : "Chris", "Subjects" : [ "MySQL", "MongoDB", "Java" ], "Details" : [ { "Name" : "David", "S" : "MongoDB" } ] }
-
MongoDBで配列アイテムをグループ化し、同様の価格の製品をカウントしますか?
配列アイテムをグループ化するには、$groupを$sortとともに使用します。ドキュメントを使用してコレクションを作成しましょう- > db.demo566.insertOne( ... { ... ... "ProductInformation" : [ ... { ... "ProductName" : "Product-1", ...
-
IDを並べ替え、MongoDBでアイテムを逆にします
$ naturalは、ドキュメントを自然な順序で返します。アイテムを元に戻すには、 $ natural:-1を使用します 。ドキュメントを使用してコレクションを作成しましょう- > db.demo710.insertOne({id:101,Name:"Robert"}); { "acknowledged" : true, "insertedId" : ObjectId("5ea83a855d33e20ed1097b7a") } > db.demo710