Mongodb基于数组字段的查找查询

问题描述 投票:0回答:3

集合:

{
         "_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”)。

python mongodb mongodb-query aggregation-framework pymongo
3个回答
1
投票

文档在此处包含有关此类型查询的部分:https://docs.mongodb.com/manual/tutorial/query-array-of-documents/


1
投票

mongodb或robomongo的查询与您的情况下的find()可能相同,但我选择了可​​以过滤值的聚合。


0
投票

如果详细信息数组可能具有active = true的某些对象,而某些对象= false,而您只需要获得具有active = false的对象,那么我们可以在聚合管道中使用$filter来过滤details数组。 >

您的查询也许是这样

© www.soinside.com 2019 - 2024. All rights reserved.