Có, để tìm kiếm một mảng đối tượng, hãy sử dụng $ unwind trong MongoDB tổng hợp (). Để đối sánh, hãy sử dụng $ match. Hãy để chúng tôi tạo một bộ sưu tập với các tài liệu -
> db.demo623.insertOne( ... { ... _id:1, ... details:[ ... { ... Name:"Chris" ... }, ... { ... DueDate:new ISODate("2020-01-10") ... }, ... { ... CountryName:"US" ... } ... ] ... } ... ); { "acknowledged" : true, "insertedId" : 1 }
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.demo623.find().pretty();
Điều này sẽ tạo ra kết quả sau -
{ "_id" : 1, "details" : [ { "Name" : "Chris" }, { "DueDate" : ISODate("2020-01-10T00:00:00Z") }, { "CountryName" : "US" } ] }
Sau đây là truy vấn để tìm kiếm một mảng đối tượng trong MongoDB -
> db.demo623.aggregate({$unwind: "$details"}, ... {$match: {"details.Name":"Chris"}}, ... {$project: {"details.Name": 1}})
Điều này sẽ tạo ra kết quả sau -
{ "_id" : 1, "details" : { "Name" : "Chris" } }