Computer >> Máy Tính >  >> Lập trình >> MongoDB

Tìm trong tài liệu MongoDB với mảng lồng nhau được lấp đầy và định hình lại kết quả tài liệu

Trước tiên, hãy để chúng tôi tạo một bộ sưu tập với các tài liệu -

> db.demo187.insertOne(
...    {
...      "_id" : "101",
...      "Details" : [
...         { "Subject" : "MongoDB" },
...         { "Subject" : "MySQL" }
...      ]
...   }
...);
{ "acknowledged" : true, "insertedId" : "101" }
> db.demo187.insertOne(
...   {
...      "_id" : "102",
...      "Details" : [
...         { }
...      ]
...   }
...);
{ "acknowledged" : true, "insertedId" : "102" }
> db.demo187.insertOne(
...   {
...      "_id" : "103",
...      "Details" : [
...         { "Subject" : "MongoDB" },
...         { "Subject" : "MySQL" }
...      ]
...   }
...);
{ "acknowledged" : true, "insertedId" : "103" }

Hiển thị tất cả các tài liệu từ một bộ sưu tập với sự trợ giúp của phương thức find () -

> db.demo187.find();

Điều này sẽ tạo ra kết quả sau -

{ "_id" : "101", "Details" : [ { "Subject" : "MongoDB" }, { "Subject" : "MySQL" } ] }
{ "_id" : "102", "Details" : [ {  } ] }
{ "_id" : "103", "Details" : [ { "Subject" : "MongoDB" }, { "Subject" : "MySQL" } ] }

Sau đây là truy vấn để tìm trong tài liệu MongoDB với mảng lồng nhau được lấp đầy -

> db.demo187.aggregate([
...
...   {$unwind: '$Details'},
...
...   {$project: {Subject: '$Details.Subject'}},
...
...   {$match: {Subject: {$exists: true}}}
... ])

Điều này sẽ tạo ra kết quả sau -

{ "_id" : "101", "Subject" : "MongoDB" }
{ "_id" : "101", "Subject" : "MySQL" }
{ "_id" : "103", "Subject" : "MongoDB" }
{ "_id" : "103", "Subject" : "MySQL" }