【发布时间】:2019-06-28 04:23:54
【问题描述】:
我的 mongodb 文档结构如下:
{
"_id" : ObjectId("5b58673721b4b95a193d4e91"),
"pageId" : "page1",
"fields" : [
{
"fieldId" : "Field1",
"value" : "test"
},
{
"fieldId" : "Field2",
"value" : 6.0
},
{
"fieldId" : "Field3",
"value" : 8.0
}
]}
}
我想在集合中找到 fieldId 为“Field2”的对象的值大于 fieldId 为“Field3”的对象的值的所有文档。
即字段2(值) > 字段3(值)
字段数组中的对象数量不固定。我无法按职位进行比较。我必须按字段 ID 匹配对象。因此,在这种情况下,它必须位于:
比较:object value where fieldId='Field2' with
对象值 where fieldId='Field3'
如何为此编写 MongoDB 查询?
我使用的是 MongoDB 4.0 版
(在某些情况下,文档中可能不存在字段。
例如在设计中引入这些字段之前创建的文档)
【问题讨论】:
-
您是否希望仅在两个字段都存在时包含用于比较的文档?
-
就可以了。但是,如果有一种方法可以使用一些默认值来包含没有这些字段的文档。我也想知道。
-
当然。默认值是多少?
-
假设这两个字段分别是 10 和 5。
标签: mongodb mongodb-query aggregation-framework