我想查询数据库并在Find中使用一个值数组,以获得每个值一个文档.

这可以在一个查询中完成吗?

例如:

使用多个国家/地区:["GB", "FR", "DE"]

只使用1个查询,而不是遍历Country数组, for each 值获取一个文档,因此查询的响应应该如下所示:

[
  { "_id": 0, country: "GB" },
  { "_id": 1, country: "FR" },
  { "_id": 2, country: "DE" }
]

我已经查看了MongoDB文档和堆栈溢出,但没有找到与我的问题相关的答案.大多数查询都试图在数组中查找一个值.

推荐答案

一种 Select 是:

db.collection.aggregate([
  {$match: {
      country: {$in: ["GB", "FR", "DE"]}
  }},
  {$group: {
      _id: "$country",
      data: {$first: "$$ROOT"}
  }},
  {$replaceRoot: {newRoot: "$data"}}
])

看看它在playground example号公路上是如何工作的

Node.js相关问答推荐

如果非SQL函数在事务内部运行失败,PG-Promise事务会回滚吗?

如何在mongodb集合中设置数据限制?

如果我加入另一个公会且我的​​机器人已在其中,欢迎消息发送错误

在 azure blob 容器之间复制文件

如何在 JavaScript 中显示多维数组中使用的一维数组的变量名?

找不到模块bcryptjs

我如何保护nodejs中的路由

为什么我的 Cypress Post 请求的请求正文是空的?

在快速路由中使用 axios 会在数据字段中返回特殊字符而不是 json

在 React 和 Socket.io 中使用 Effect 钩子重新渲染两次

如何解决这个关于 TaskRunner 的 Node/Express 代码问题?

NodeJS 后端发布请求将数据作为NULL值发布到 SQL Server 表

JavaScript & Node - 将图像文件保存到服务器但无法查看

仅显示用户在 Reactjs 中使用服务器端发布的帖子是 Node Js、Mongodb

为什么 req.params.id 返回 undefined未定义?

我可以向NPM添加调试脚本吗?

我可以有条件地将 where() 子句添加到我的 knex 查询吗?

如何判断 Node.js 中是否设置了环境变量?

找不到在 docker compose 环境中运行的 node js 应用程序的模块

什么时候应该将函数存储到变量中?