如何在mongodb中执行联接?如果我加入了两个或更多集合,即使使用了$match
,它也无效且不能正确加入。
这是我尝试过的代码:
db.tasks.aggregate([{"$match":{"$and":[{"super_user_id":"5dad7e6d937e2929d3930a45","is_deleted":0}]}},{"$lookup":{"from":"projects","localField":"projects._id","foreignField":"tasks.project_id","as":"pro"}},{"$unwind":"$pro"},{"$project":{"task_name":1,"project_id":"$pro._id","project_name":"$pro.project_name"}},{"$group":{"_id":{"task_name":"$task_name","taskId":"$_id","project_name":"$project_name","project_id":"$project_id"}}}])
获取输出为:
{ "_id" : { "task_name" : "very second task","taskId" : ObjectId("5dcbb770937e29163cfed455"),"project_name" : "test","project_id" : ObjectId("5dc9ab54937e292110e2ad17") } }
{ "_id" : { "task_name" : "very second task","project_name" : "monday","project_id" : ObjectId("5dc91fc9937e2937e0407647") } }
{ "_id" : { "task_name" : "very second task","project_name" : "nnnn","project_id" : ObjectId("5dc90f67937e2924d82087fb") } }
{ "_id" : { "task_name" : "very second task","project_name" : "vvv","project_id" : ObjectId("5dc90ea6937e2924d82087fa") } }
让我详细说明这个问题:
对于同一task_name
,它是否与所有现有项目映射