集合:
{
"_id" : ObjectId("57506d74c469888f0d631be6"),
"name" : "mycollection",
"details" : [
{
"date" : "25/03/2020",
"number" : "A",
"active" : false
}
},
{
"_id" : ObjectId("57506d74c469888f0d631usi"),
"name" : "newcollection",
"details" : [
{
"date" : "30/03/2020",
"number" : "C",
"active" : false
}
},
{
"_id" : ObjectId("57506d74c4633388f0d631usi"),
"name" : "mycollection",
"details" : [
{
"date" : "31/03/2020",
"number" : "C",
"active" : false
}
},
}
查找查询以基于详细信息字段内的活动状态获取值。
我尝试过:
db.collection.find(
{"name": "mycollection", "details": {"active": False}})
预期结果:我需要其中每个集合的详细信息字段下的active为false的集合。对于此处记录ID,应显示ObjectId(“ 57506d74c469888f0d631be6”)和ObjectId(“ 57506d74c4633388f0d631usi”)。
文档在此处包含有关此类型查询的部分:https://docs.mongodb.com/manual/tutorial/query-array-of-documents/
mongodb或robomongo的查询与您的情况下的find()可能相同,但我选择了可以过滤值的聚合。
如果详细信息数组可能具有active = true的某些对象,而某些对象= false,而您只需要获得具有active = false的对象,那么我们可以在聚合管道中使用$filter来过滤details数组。 >
您的查询也许是这样