jsc*_*ode 4 mongoose mongodb node.js aggregation-framework
我使用 $project 操作来指定包含的字段我有以下代码:
[{
'$lookup': {
'from': 'users',
'localField': 'owner',
'foreignField': 'id'
'as': 'user'
}
}, {
'$project': {
'userName': '$user.username',
'userId': '$user.id'
}
}]
Run Code Online (Sandbox Code Playgroud)
我的结果如下:
[
{
"userName": [
"jscode"
],
"userId": [
"5d1888d60c627764aabd8b1e"
]
}
]
Run Code Online (Sandbox Code Playgroud)
我需要将userId和userName结果从数组转换为字符串, 如下所示:
[
{
"userName": "jscode" ,
"userId": "5d1888d60c627764aabd8b1e"
}
]
Run Code Online (Sandbox Code Playgroud)
谢谢 :)
您可以使用下面的$project阶段
{
"$project": {
"userName": { "$arrayElemAt": ["$user.username", 0] },
"userId": { "$arrayElemAt": ["$user.id", 0] }
}
}
Run Code Online (Sandbox Code Playgroud)
或使用$unwind
[
{ "$lookup": {
"from": "users",
"localField": "owner",
"foreignField": "id",
"as": "user"
}},
{ "$unwind": "$user" },
{ "$project": {
"userName": "$user.username",
"userId": "$user.id"
}}
]
Run Code Online (Sandbox Code Playgroud)
实际上$lookup总是以数组的形式返回新字段。因此,要从该数组中选择字段,您需要使用$unwind或可以$arrayElemAt选择第 0 个元素。
| 归档时间: |
|
| 查看次数: |
4051 次 |
| 最近记录: |