我们可以在 MongoDB 中搜索对象数组吗?
是的,要搜索对象数组,请在 MongoDB aggregate() 中使用 $unwind。若要匹配,请使用 $match。我们创建一个包含文档的集合 −
> db.demo623.insertOne( ... { ... _id:1, ... details:[ ... { ... Name:"Chris" ... }, ... { ... DueDate:new ISODate("2020-01-10") ... }, ... { ... CountryName:"US" ... } ... ] ... } ... ); { "acknowledged" : true, "insertedId" : 1 }
使用 find() 方法显示集合中的所有文档 −
> db.demo623.find().pretty();
这将产生以下输出 −
{ "_id" : 1, "details" : [ { "Name" : "Chris" }, { "DueDate" : ISODate("2020-01-10T00:00:00Z") }, { "CountryName" : "US" } ] }
以下是 MongoDB 中搜索对象数组的查询 −
> db.demo623.aggregate({$unwind: "$details"}, ... {$match: {"details.Name":"Chris"}}, ... {$project: {"details.Name": 1}})
这将产生以下输出 −
{ "_id" : 1, "details" : { "Name" : "Chris" } }
广告