无法在mongodb中创建良好匹配查询,以获取包含带有“名称”文档的文档

时间:2020-04-11 00:26:12

标签: mongodb mongodb-query

我正在尝试编写一个查询,该查询将仅返回包含具有特定名称的子文档的文档

例如:

第一个文档

{
    "_id" : ObjectId("5df38168358d1e3cec1af759"),
    "sysInfo" : {
        "User" : "blatman",
        "OS" : "Windows",
        "GPU" : "NVIDIA GeForce GTX 1080 Ti  ",
        "CPU" : "Intel(R) Core(TM) i7-8700 CPU @ 3.20GHz  ",
        "RAM" : 65478
    },
    "performance" : {
        "step1" : {
            "1" : {
                "RT" : 502.41438310258566
            }
        }
    }
}

第二个文档

{
    "_id" : ObjectId("5df38168358d1e3cec1af759"),
    "sysInfo" : {
        "User" : "blatman",
        "OS" : "Windows",
        "GPU" : "NVIDIA GeForce GTX 1080 Ti  ",
        "CPU" : "Intel(R) Core(TM) i7-8700 CPU @ 3.20GHz  ",
        "RAM" : 65478
    },
    "performance" : {
        "step2" : {
            "1" : {
                "RT" : 505.41438310258566
            }
        }
    }
}

我只希望在“匹配”之后返回第一个文档(子文档为“ step1”的文档)

1 个答案:

答案 0 :(得分:0)

您可以对查询或聚合框架使用$exists。猜猜您自从提到match以来就一直在使用聚合框架。

尝试一下:

db.collection.aggregate([
  {
    $match: {
      "performance.step1": {
        $exists: 1
      }
    }
  }
])

Mongo Playground