我使用$ project操作指定要包含的字段,我有以下代码:
[{
'$lookup': {
'from': 'users',
'localField': 'owner',
'foreignField': 'id'
'as': 'user'
}
}, {
'$project': {
'userName': '$user.username',
'userId': '$user.id'
}
}]
我的结果如下:
[
{
"userName": [
"jscode"
],
"userId": [
"5d1888d60c627764aabd8b1e"
]
}
]
我需要将 userId 和 userName 结果从 array 转换为 string ,如下所示:
[
{
"userName": "jscode" ,
"userId": "5d1888d60c627764aabd8b1e"
}
]
谢谢:)
答案 0 :(得分:3)
您可以在$project
以下阶段使用
{
"$project": {
"userName": { "$arrayElemAt": ["$user.username", 0] },
"userId": { "$arrayElemAt": ["$user.id", 0] }
}
}
或使用$unwind
[
{ "$lookup": {
"from": "users",
"localField": "owner",
"foreignField": "id",
"as": "user"
}},
{ "$unwind": "$user" },
{ "$project": {
"userName": "$user.username",
"userId": "$user.id"
}}
]
实际上$lookup
总是以数组形式返回新字段。因此,要从该数组中选择字段,您需要使用$unwind
或可以$arrayElemAt
来选择第0个元素。