从名为 genre 的集合中导出所有文档,其中 book_id 如果它包含在图书集合中

问题描述 投票:0回答:1

我现在已经坚持了大约 6 个小时,我正在努力寻找有关使用 mongoDB 指南针导出的任何帮助。我有两个合集,分别叫做 Books 和 Genre。它们都包含一个名为 book_id 的字段。流派集合包含我不需要的文档。我只想提取在 Book 集合中具有相应书籍 ID 的 genre 集合中的文档。 book collection 中的 book_id 是一个字符串,在 genre collection 中存储为一个整数。

流派收藏:

_id: ObjectId('')
genres: Array
book_id: 5

藏书:

_id: ""
book_id: "1823092"

我尝试使用查找聚合管道,但没有使用 mongodb 的经验,所以如果有人能提供帮助,我将非常努力。

mongodb nosql export aggregate nosql-aggregation
1个回答
0
投票

这里有一种方法可以只返回

Genre
文档,这些文档在
book_id
集合中具有相应的
Books

db.Genre.aggregate([
  {
    "$lookup": {
      "from": "Books",
      "let": {
        "book_idStr": {"$toString": "$book_id"}
      },
      "as": "books",
      "pipeline": [
        {
          "$match": {
            "$expr": {
              "$eq": ["$$book_idStr", "$book_id"]
            }
          }
        }
      ]
    }
  },
  {
    "$match": {
      "$expr": {
        "$gt": [{"$size": "$books"}, 0]
      }
    }
  },
  {"$unset": "books"}
])

mongoplayground.net 上尝试使用一些虚构的数据。

© www.soinside.com 2019 - 2024. All rights reserved.