gpt4 book ai didi

mongodb - 如何在 $lookup(聚合)中将 ObjectID 转换为 String

转载 作者:可可西里 更新时间:2023-11-01 09:06:19 32 4
gpt4 key购买 nike

我有两个集合,article和comments,comments中的articleId是article中_id的外键。

db.collection('article').aggregate([
{
$lookup: {
from: "comments",
localField: "_id",
foreignField: "articleId",
as: "comments"
}
},
...
])

但它不起作用,因为文章中的 _id 是一个 ObjectIDarticleId 是一个字符串。

最佳答案

您可以使用 $addFields 实现此目的和 $toObjectId简单地将字符串 id 转换为 mongo objectId 的聚合

db.collection('article').aggregate([
{ "$lookup": {
"from": "comments",
"let": { "article_Id": "$_id" },
"pipeline": [
{ "$addFields": { "articleId": { "$toObjectId": "$articleId" }}},
{ "$match": { "$expr": { "$eq": [ "$articleId", "$$article_Id" ] } } }
],
"as": "comments"
}}
])

或使用 $toString聚合

db.collection('article').aggregate([
{ "$addFields": { "article_id": { "$toString": "$_id" }}},
{ "$lookup": {
"from": "comments",
"localField": "article_id",
"foreignField": "articleId",
"as": "comments"
}}
])

关于mongodb - 如何在 $lookup(聚合)中将 ObjectID 转换为 String,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44344711/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com