在MongoDB中查找名称/值对值而不是数组元素的子文档

时间:2019-06-09 18:48:58

标签: mongodb mongodb-query

也许我的文档结构不太适合我要尝试的工作,但是经过一段时间的努力,我意识到$elemMatch可能不是我的朋友。这是一个示例文档:

{
  "field": {
    "abc": {
      x: 0,
      str: "aaa"
    },
    "def": {
      x: 1,
      str: "bbb"
    },
    "ghi": {
      x: 2,
      str: "ccc"
    }
  }
}

我正在尝试构建一个查询,该查询查找满足“ field。$。x> 1”或任何程度的文档。基本上,第二级上的字段名称可以是任何名称。如果field是一个数组,我猜想$elemMatch会很漂亮。

1 个答案:

答案 0 :(得分:1)

由于您不知道键的名称,因此必须使用$objectToArray,这会将xlFormatFromLeftOrAbove转换为三个键值对的数组。然后,您可以运行$mapfield$anyElementTrue上应用条件,以检查是否有任何项目符合指定条件:

x

Mongo Playground