繁体   English   中英

MongoDB查找具有对象值的数组数据的查询

[英]MongoDB find Query for array data with object value

我陷入了monogodb查询生成和数据查找到数组对象值中。

在此数组中,如果我得到具有特定值的特定对象,则会得到

例如:

-->in department --> "5a6589d94abd7408c36350da" --> "received"

如果“ received”值是false,则它将返回整个文档。

我的数据对象在这里。

{"_id": "5cff4d893d900862be52cac5",
                    "priority": 1,
                    "description": "",
                    "duration": 8,
                    "user": null,
                    "department": [
                        {
                            "5a6589834abd7408c36350d9": {
                                "skiped": false,
                                "completed_date": "2019-06-11T06:36:09.431Z",
                                "completed": true,
                                "received_date": "2019-06-11T06:36:09.431Z",
                                "received": true
                            }
                        },
                        {
                            "5a6589d94abd7408c36350da": {
                                "skiped": false,
                                "completed_date": "2019-06-26T09:36:52.975Z",
                                "completed": true,
                                "recieved_date": "2019-06-11T06:43:21.590Z",
                                "received": false,
                                "totalDaysofCompletion": 15,
                                "user_id": "5b3c629a250d3a65eb7367a5"
                            }
                        },
                        {
                            "5a658b054abd7408c36350db": {
                                "skiped": false,
                                "completed_date": "2019-06-11T06:36:09.431Z",
                                "completed": false,
                                "received_date": "2019-06-26T09:36:52.980Z",
                                "received": true
                            }
                        }
]
}

首先通过_id检索文档,然后检查收到的值。 或者您可以通过传递_id和接收值false来查找文档,如果该文档的接收值为false,则它将返回null,否则将返回文档。

查询多个参数可以为您提供帮助。 department.find({"_id" : "5a6589d94abd7408c36350da" , "received" : false })

尝试这个

db.getCollection("demo_table").aggregate(
[
    { 
        "$unwind" : {
            "path" : "$department"
        }
    }, 
    { 
        "$match" : {
            "department.5a6589d94abd7408c36350da" : {
                "$exists" : true
            }, 
            "department.5a6589d94abd7408c36350da.received" : false
        }
    }, 
    { 
        "$project" : {
            "department" : 1.0
        }
    }
]
);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM