如何在 $project 阶段将一个值的数组转换为一个对象?
How to transform an array of one value into an object in $project stage?
使用 mongodb,我想转换文档中的数组,如下所示:
{activities: [{"start": start_date, "end": end_date, value:"4332A"}]}
进入一个对象,像这样(仅将值字段投影为“活动”的值):
{activities: "4332A"}
我尝试在 $project 阶段使用 $arrayToObject,但结果并不是我想要的:
db.companies.aggregate([{
$project: {
$map: {
'input': '$activities',
'as': 'item',
'in': {
'k': 'activities',
'v': '$$item.value'
}
}
}
])
输出为:
{"activities": {"activities": "4332A"}}
假设数组中总是只有一个结果(如您所说),您可以只使用 arrayElemAt,如下所示:
db.collection.aggregate([
{
$addFields: {
activities: {
"$arrayElemAt": [
"$activities.value",
0
]
}
}
}
])
使用 mongodb,我想转换文档中的数组,如下所示:
{activities: [{"start": start_date, "end": end_date, value:"4332A"}]}
进入一个对象,像这样(仅将值字段投影为“活动”的值):
{activities: "4332A"}
我尝试在 $project 阶段使用 $arrayToObject,但结果并不是我想要的:
db.companies.aggregate([{
$project: {
$map: {
'input': '$activities',
'as': 'item',
'in': {
'k': 'activities',
'v': '$$item.value'
}
}
}
])
输出为:
{"activities": {"activities": "4332A"}}
假设数组中总是只有一个结果(如您所说),您可以只使用 arrayElemAt,如下所示:
db.collection.aggregate([
{
$addFields: {
activities: {
"$arrayElemAt": [
"$activities.value",
0
]
}
}
}
])