Как сделать запрос ко всем документам, где поле массива имеет хотя бы один объект-элемент со свойством, равным 'X'? - PullRequest
0 голосов
/ 10 апреля 2020

У меня есть несколько документов MongoDB, таких как:

{
"group": "P32666",
"order": [{
    "_id": {
        "$oid": "5e8e9b40e7999f6b90fd88bf"
    },
    "name": "Dmitriy A",
    "login": "example",
    "password": "example",
    "email": "example",
    "level": "user",
    "uuid": "b6a19744-bb20-4d39-9e1e-0ca5b464f890"
}, {
    "_id": {
        "$oid": "5e8ea03f5a21c26b90983de4"
    },
    "name": "Dmitriy B",
    "login": "example",
    "password": "example",
    "email": "example",
    "level": "user",
    "uuid": "556924c3-605c-44cc-8a26-d32f58222e89"
}, {
    "_id": {
        "$oid": "5e8ea0645a21c26b90983de5"
    },
    "name": "Dmitriy C",
    "login": "example",
    "password": "example",
    "email": "example",
    "level": "user",
    "uuid": "aef00707-ef00-4ce9-918b-5cef17e7280b"
}]}

Я работаю с Пн go в Пн goose и не могу понять, как запросить все документы (как выше), где поле (массив) «заказ» имеет по крайней мере один объект, в пределах которого поле, например, «логин», равнозначно «примеру». Как я могу это сделать?

Я пробовал что-то вроде этого:

export async function getQueues(request: Request, response: Response) {
  const returningQueues = await queues.find({order: [login: request.params.login]});
  response.json(returningQueues);

Но ошибка TypeScript (56 отсутствующих свойств (в основном внутренних Mon goose) типа "Пользователь", который я храню в массиве) говорит, что я не прав в своих мыслях.

1 Ответ

0 голосов
/ 10 апреля 2020

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

queues.find({"order.login": request.params.login})

Но если у вас несколько условий, вы можете использовать $ elemMatch :

queues.find({
  order: { $elemMatch: { login: request.params.login, name: request.params.name } } 
})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...