【发布时间】:2017-12-13 09:23:30
【问题描述】:
我有一个如下所示的 JSON 文档
[
{a: "v1",b: "v2",c: "v3",d: [{k1: true},{k2: true},{k3: false}]},
{a: "v1",b: "v2",c: "v7",d: [{k1: false},{k2: true},{k3: false}]},
{a: "v8",b: "v9",c: "v3",d: [{k1: false},{k2: true},{k3: true},{k4: false}]},
{a: "v5",b: "v2",c: "v10",d: [{k1: false},{k2: true},{k3: false}]}
]
我想写如下所示的查询:
select d from the above docs
where a = v1
and b = v2
预期的结果将是以下两个文件:
{a: "v1",b: "v2",c: "v3",d: [{k1: true},{k2: true},{k3: false}]},
{a: "v1",b: "v2",c: "v7",d: [{k1: false},{k2: true},{k3: false}]}
到目前为止,这很容易。下面的查询会给你结果:
db.audit.find({a:"v1", b:"v2"},{d:1,_id:0}).pretty()
问题-
现在的要求是在检索到的文档之间进行布尔运算。 “或”布尔运算应该是对“d”键的数组元素的子文档中找到的各个键(k1、k2、k3等)的值。
如果密钥不存在,则假定它为假。
在 MongoDB 中有这样做的吗?
通过将 d 分配给变量然后比较它很容易以编程方式进行,但我正在尝试查找 MongoDB 是否可以直接执行此操作。
提前致谢。
谢谢 奥罗
【问题讨论】: