【问题标题】:Find one document in mongodb per array value每个数组值在 mongodb 中查找一个文档
【发布时间】:2023-02-09 01:48:46
【问题描述】:

我想查询数据库并在查找中使用一组值来为每个值获取一个文档。

是否可以在一个查询中执行此操作?

例如:

使用一系列国家:["GB", "FR", "DE"]

只使用 1 个查询,而不是遍历国家/地区数组,为每个值获取一个文档,因此查询的响应应如下所示:

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

我查看了 MongoDB 文档和 stackoverflow,但没有找到与我的问题相关的答案。大多数查询都试图在数组中找到一个值。

【问题讨论】:

  • 你查过$in了吗?

标签: node.js arrays mongodb mongodb-query


【解决方案1】:

一种选择是:

db.collection.aggregate([
  {
    $match: {
      country: {
        $in: [
          "GB",
          "FR",
          "DE"
        ]
      }
    }
  },
  {
    $group: {
      _id: "$country",
      id: {
        $first: "$_id"
      }
    }
  },
  {
    $project: {
      country: "$_id",
      _id: "$id"
    }
  }
])

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-10
    • 2021-11-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多