Найти подходящее поле в массиве объектов в объекте с go mon go -драйвером - PullRequest
0 голосов
/ 11 марта 2020

Моя база данных mon go имеет такую ​​структуру. Учитывая родителя _id, например, 123, как я могу сделать запрос, чтобы проверить, существует ли элемент abc в его родительском 123?

[
  - _id: 123
    name: "item 1"
    items: [
      {
        _id: abc,
        age: 12,
      },
      {
        _id: efg,
        age: 12,
      }
    ]
  ,
  - id: 456
    name: "item 2"
    items: [
      ...
    ]
]

У меня в настоящее время есть это, и я Я пробовал $elemMatch, но, похоже, он не работает.

db.Collection("album").FindOne(context.Background(), bson.M{"_id": parentID})

1 Ответ

0 голосов
/ 11 марта 2020

Непонятно, есть ли у items отдельные документы или это вложенный массив в документе. В любом случае:

Если items является вложенным массивом в документе, то:

bson.M{"_id":parentID,"items._id":"abc"}

найдет документы, у которых _id равно parentID и которые содержат _id:"abc" в один из элементов items.

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