Не могу создать запрос на совпадение в mongodb для получения do c, которые содержат do c с "name" - PullRequest
0 голосов
/ 11 апреля 2020

Я пытаюсь написать запрос, который будет возвращать только те документы, которые содержат вложенный документ с указанным c именем

Например:

Первый документ

{
    "_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 голосов
/ 11 апреля 2020

Вы можете использовать $ существующие с запросом или структурой агрегации. Догадываюсь, что вы собираетесь использовать структуру агрегирования, поскольку вы упомянули match.

Попробуйте:

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

Пн go Детская площадка

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...