在MongoDB中匹配包含数组的一组项目

时间:2018-12-12 15:42:38

标签: javascript mongodb mongodb-query

假设我有以下数据

[
  { 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中与我的两个项目AB相匹配的data(项目#1和{{1} }。 #3 可能吗?

1 个答案:

答案 0 :(得分:2)

您可以遍历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) }
  }
)