我有两个收藏品:
用户:
"_id": {
"$oid": "62f7gsda96211065456322a10fe"
},
"name": "test",
"roles": ["user"],
"type": "user",
"fullName": "Test Test",
"email": "test_test@test.com",
"password_scheme": "pbkdf2",
"iterations": 10,
"derived_key": "ef150b4daa328703e68ae57f112321580ce95aa4",
"salt": "1e22243068bbsbsdva8d6459a683e2903",
"isDiactivated": false,
"idclient": {
"$oid": "60f7cca7321da11252a10fd"
}
时间守护者:
"_id": {
"$oid": "60f7ccbd62110611252a130a"
},
"dtstart": {
"$date": "2020-06-01T15:24:35.388Z"
},
"idstory": {
"$oid": "60f7ccad62110611252a1271"
},
"idworkday": {
"$oid": "60f7ccbd62110611252a1308"
},
"dtend": {
"$date": "2020-06-01T15:35:36.856Z"
},
"idclient": {
"$oid": "60f7cca7321da11252a10fd"
},
"idowner": {
"$oid": "62f7gsda96211065456322a10fe"
}
在查询中,我需要获取timelogs。Timelogs有一个"idowner“字段,该字段引用用户。我希望从timelogs获取所有数据,但也想从用户集合中获取用户的“名称”。
它应该是这样的:
"_id": {
"$oid": "60f7ccbd62110611252a130a"
},
"dtstart": {
"$date": "2020-06-01T15:24:35.388Z"
},
"idstory": {
"$oid": "60f7ccad62110611252a1271"
},
"idworkday": {
"$oid": "60f7ccbd62110611252a1308"
},
"dtend": {
"$date": "2020-06-01T15:35:36.856Z"
},
"idclient": {
"$oid": "60f7cca762110611252a10fd"
},
"idowner": {
"$oid": "62f7gsda96211065456322a10fe"
},
"name": "test"
发布于 2021-07-21 07:58:14
您可以使用$lookup
连接2个集合。
db.timelogs.aggregate([{
$lookup: {
from: "user", //remote collection name
localField: "idowner.oid", //timelogs collection field
foreignField: "_id.oid", //remote collection mapping field
as: "idowner" //to be imported as
}
}
,{$unwind:"$idowner"}
,{$project:{
dtstart:1,
idstory:1,
idworkday:1,
dtend:1,
idclient:1,
idowner:"$idowner._id",
name:"$idowner.name"
}}
])
发布于 2021-07-21 08:19:39
db.timelogs.aggregate([{
$lookup: {
from: "user",
localField: "idowner.oid",
foreignField: "_id.oid",
as: "User"
}
}
,{$unwind:"$User"}
,{$project:{
'User':'$User.name'
])
https://stackoverflow.com/questions/68465763
复制相似问题