我是MongoDB的新手,所以不确定我是否正确表达了我的问题。
我有一个集合,其中的数据如下所示:
{
"_id" : ObjectId("66666"),
"Id" : 994,
"PostType" : 1,
"AnswerId" : 334,
"CreationDate" : ISODate("1994-09-05T09:34:36.177+0000"),
"Tags" : "test",
"Parent" : null,
}
{
"_id" : ObjectId("8888"),
"Id" : 334,
"PostTypeId" : 2,
"AnswerId" : NaN,
"CreationDate" : ISODate("20005-08-03T11:29:42.880+0000"),
"ParentId" : 994
}
两个文档都在同一集合中,我试图使用PostType:1的文档中的AnswerId,并将该值用作提取其CreationDate的主要ID。
这是我试图实现的逻辑,但它似乎没有用:
db.collection.aggregate([
{$project:{_id:"$Id", Title:"$Title", Answerid:"$AnswerId", QuestionDate:"$CreationDate"}},
{$match:{Id:"$Answerid"}},
{$project:{AnswerDate:"$CreationDate"}}
])
我愿意接受任何建议。
答案 0 :(得分:0)
您可以在mongodb 3.6 及更高版本
中尝试以下聚合db.collection.aggregate([
{ "$match": { "Id": 2627 }},
{ "$lookup": {
"from": "collection",
"let": { "answerId": "$AnswerId" },
"pipeline": [{ "$match": { "$expr": { "$eq": ["$Id", "$$answerId"] }}}],
"as": "dates"
}}
])
或者使用 3.4 及更高版本
db.collection.aggregate([
{ "$match": { "Id": 2627 }},
{ "$lookup": {
"from": "collection",
"localField": "AnswerId",
"foreignField": "Id",
"as": "dates"
}}
])