Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MongoDB

สืบค้นเอกสารย่อย MongoDB เพื่อพิมพ์ในบรรทัดเดียวหรือไม่


หากต้องการแสดงเอกสารย่อยในหนึ่งบรรทัด ให้ใช้ $unwind พร้อมกับ aggregate() ให้เราสร้างคอลเลกชันที่มีเอกสาร -

> db.demo183.insertOne(... {... "_id":"110",... "DueDate":ISODate("2020-02-04T01:10:42.000Z"),.. . "ProductDetails":[... {... "ProductName":"Product-1",... "isAvailable":true... },... {... "ProductName":"Product- รายละเอียดผลิตภัณฑ์":[... {... "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 } ]}

ต่อไปนี้เป็นวิธีการสืบค้นเอกสารย่อยและพิมพ์ในบรรทัดเดียว -

> 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, trueTue Feb 04 2020 06:40:42 GMT+0530 (India Standard Time), Product-2, false

ก่อน>