集合:
{
"_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
}
},
}根据details字段中的活动状态获取值的查找查询。
我试过:
db.collection.find(
{"name": "mycollection", "details": {"active": False}})预期结果:在每个集合中的details字段下,我需要活动为false的集合。这里应该显示记录id ObjectId("57506d74c469888f0d631be6")和ObjectId("57506d74c4633388f0d631usi")。
发布于 2020-05-27 14:38:12
文档包含关于这种类型的查询的一节:https://docs.mongodb.com/manual/tutorial/query-array-of-documents/
您的查询不起作用,因为这种语法要求数组包含确切的对象,但是数组中的文档包含额外的字段,因此没有匹配。
本例的查询是db.collection.find({"name": "mycollection", "details.active": False})。
注意:这将返回数组包含带有active==false的对象的所有文档,但是它不会过滤实际的数组来删除active=true的任何元素。
https://stackoverflow.com/questions/62045507
复制相似问题