Соответствие набору элементов, содержащих массивы в MongoDB - PullRequest
0 голосов
/ 12 декабря 2018

Допустим, у меня есть следующие данные

[
  { name: 'A', values: [1, 2, 3 ,4] },
  { name: 'B', values: [5, 6, 7, 8] }
]

, и у меня есть mongodb, который содержит следующие элементы в коллекции:

#1 { name: 'A', values: [1, 2, 3 ,4], path: '...' },
#2 { name: 'B', values: [8, 9, 5, 7], path: '...' },
#3 { name: 'B', values: [5, 6, 7, 8], path: '...' },
#4 { name: 'C', values: [9, 10, 11, 12], path: '...' }

Теперь я хочу запроситьpath s, которые соответствуют моим 2 предметам A и B из data (Предметы #1 и #3).Возможно ли это edit: with a single query?

1 Ответ

0 голосов
/ 12 декабря 2018

Вы можете просмотреть цикл data и использовать запрос внутри функции map, сделав его асинхронным

const data = [
  { name: 'A', values: [1, 2, 3 ,4] },
  { name: 'B', values: [5, 6, 7, 8] }
]

const result = []
await Promise.all(data.map(async(d) => {
  result.push(await db.collection.findOne(d))
}))

Или даже с помощью одного запроса

await db.collection.find(
  {
    name: { $in: data.map(({ name }) => name) },
    values: { $in: data.map(({ values }) => values) }
  }
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...