Py学习  »  MongoDB

嵌套对象内的MongoDB查询

Odin • 4 年前 • 953 次点击  

我正试图查询我的文档,它看起来像这样

"approvals" : {
    "REV" : "",
    "SS" : "",
    "ABC" : {
        "status" : "Sent for approval",
        "approved_at" : "",
        "approved_by" : "",
    },
    "XYZ" : {
        "status" : "Approved",
        "approved_by" : "xxx@abc.com",
        "approved_at" : ISODate("2020-01-06T09:48:22.777Z"),
    },....
}

这个 Approval 对象可以有多个子文档,如ABC、XYZ…等,我需要查询此“批准”是否有任何子文档 "status" 不在 APPROVED 状态

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/56019
 
953 次点击  
文章 [ 1 ]  |  最新文章 4 年前
mickl
Reply   •   1 楼
mickl    4 年前

你得跑了 $objectToArray 扫描动态键。那你需要 $anyElementTrue 具有 $map Approved 价值:

db.collection.find(
    { 
        $expr: { 
            $anyElementTrue: { 
                $map: { 
                    input: { $objectToArray: "$approvals" },
                    in: { $ne: [ "$$this.v.status", "Approved" ] } 
                }
            } 
        }
})

Mongo Playground