我现在已经坚持了大约 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 的经验,所以如果有人能提供帮助,我将非常努力。
这里有一种方法可以只返回
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 上尝试使用一些虚构的数据。