MongoDB
 Computer >> コンピューター >  >> プログラミング >> MongoDB

MongoDBサブドキュメントをクエリして1行に印刷しますか?


サブドキュメントを1行で表示するには、aggregate()とともに$unwindを使用します。ドキュメントを使用してコレクションを作成しましょう-

> db.demo183.insertOne(
... {
...   "_id": "110",
...   "DueDate": ISODate("2020-02-04T01:10:42.000Z"),
...   "ProductDetails": [
...      {
...         "ProductName": "Product-1",
...         "isAvailable": true
...      },
...      {
...         "ProductName": "Product-2",
...         "isAvailable": false
...      }
...   ]
...   }
...);
{ "acknowledged" : true, "insertedId" : "110" }

find()メソッドを使用してコレクションからすべてのドキュメントを表示する-

> db.demo183.find().pretty();

これにより、次の出力が生成されます-

{
   "_id" : "110",
   "DueDate" : ISODate("2020-02-04T01:10:42Z"),
   "ProductDetails" : [
      {
         "ProductName" : "Product-1",
         "isAvailable" : true
      },
      {
         "ProductName" : "Product-2",
         "isAvailable" : false
      }
   ]
}

サブドキュメントをクエリして1行に印刷する方法は次のとおりです-

> var productdata = function (d) {
...   print(d.DueDate+", " + d.ProductDetails.ProductName + ", " + d.ProductDetails.isAvailable);
... }
> var iterator = db.demo183.aggregate([
...   {$match: {_id: "110"}},
...   {$unwind: '$ProductDetails'}
... ]);
> iterator.forEach(productdata );

これにより、次の出力が生成されます-

Tue Feb 04 2020 06:40:42 GMT+0530 (India Standard Time), Product-1, true
Tue Feb 04 2020 06:40:42 GMT+0530 (India Standard Time), Product-2, false

  1. 配列の1つの要素のみをスライスするMongoDBクエリ

    配列の1つの要素のみをスライスするには、MongoDBで$sliceを使用します。ドキュメントを使用してコレクションを作成しましょう- > db.demo579.insertOne( ...    { ...       "_id" : 101, ...       "details" : { "FirstName" : "John" }, ...       "Marks" :

  2. MongoDBで1つのクエリで多くのドキュメントを更新するにはどうすればよいですか?

    1つのクエリで多くのドキュメントを更新するには、MongoDBでbulkWrite()を使用します。ドキュメントを使用してコレクションを作成しましょう- > db.demo760.insertOne({id:1,details:{Value1:100,Value2:50}}); {    "acknowledged" : true,    "insertedId" : ObjectId("5eb0309f5637cd592b2a4aee") } > db.demo760.insert