【发布时间】:2019-11-15 21:54:10
【问题描述】:
MongoDB:3.6+
我有这个 Pymongo/MongoDB 查询:
_data = db['history'].aggregate([
{'$lookup':
{
'from': 'mgmt_item',
'localField': 'id_mgmt_item',
'foreignField' : 'old_id',
'as': 'mgmt_item'
}
},
{'$match': query},
{'$project': projection}
])
我得到以下结果,这是正确的。
{
"_id":"a4f2a993-749d-4b27-a9bd-c5950babd1bf",
"id_mgmt_item":3,
"value":99.660095,
"image_path":"https://url/a4f2a993-749d-4b27-a9bd-c5950babd1bf.jpg",
"mgmt_item":[
{
"lang":{
"pt_BR":"Descrição..."
}
}
]
}
但是,我想展平结果以将 mgmt_item.lang.pt_BR 的值作为 mgmt_item 属性的值,如下所示:
{
"_id":"a4f2a993-749d-4b27-a9bd-c5950babd1bf",
"id_mgmt_item":3,
"value":99.660095,
"image_path":"https://url/a4f2a993-749d-4b27-a9bd-c5950babd1bf.jpg",
"mgmt_item":"Descrição..."
}
我应该在查询中做哪些更改以获得所需的结果?
【问题讨论】:
-
您可以将您的输入文档添加到问题中吗?
-
使用
$addFields阶段。{ $addFields: { mgmt_item: { $arrayElemAt: ["$mgmt_item.lang.pt_BR", 0] }}} -
@Ashh 它就像一个魅力。谢谢。