MongoDB запрос массив объектов - PullRequest
0 голосов
/ 20 октября 2019

У меня есть следующая коллекция

{
  "collection": "user",
  "shouldUpdate": false,
  "loadOrder": 1,
  "data": [{
    "avatarUrl": "/profiles/photo.do?uid=ddd",
    "userName": "ddd",
    "firstName": "Doron",
    "lastName": "Solomon",
    "password": "password",
    "email": "x@x.com",
    "masteries": []
  }, {
    "avatarUrl": "/profiles/photo.do?uid=bbb",
    "userName": "bbb",
    "firstName": "Bob",
    "lastName": "Goodman",
    "password": "bWIxNzcz",
    "email": "y@y.com",
    "masteries": []
  }]
}

Я пытаюсь запросить эту коллекцию и вернуть только один объект из массива данных, но я всегда получаю всю коллекцию обратно, которую я пробовал:

db.users.find({ "data.lastName": "Solomon"}).pretty()

также:

db.users.find({ data:{ $elemMatch: {lastName: "Solomon" }}}).pretty()

Что мне здесь не хватает? Спасибо

Ответы [ 2 ]

0 голосов
/ 20 октября 2019

Ваш запрос верен, но, поскольку вы хотите, чтобы из массива данных был только сопоставленный объект, вы должны указать, что в projection.

db.users.find({ "data.lastName": "Solomon"},{"data.$": 1}).pretty()

$, позиционный оператор в монго. Он будет проецировать только совпадающие документы из массива данных "data.$": 1.

0 голосов
/ 20 октября 2019

Попробуйте запросить только:

db.users.find ({lastName: "Solomon"})

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