使用mongodb聚合将值映射到数组中的值
在聚合中具有具有值的记录使用mongodb聚合将值映射到数组中的值,mongodb,mongodb-query,aggregation-framework,aggregate-functions,Mongodb,Mongodb Query,Aggregation Framework,Aggregate Functions,在聚合中具有具有值的记录 _id:asdgrsdv surname:cooper, comapany:sabesto, salary:15748 mapped:Array 0:Object name:'mark', age:'25', surname:'cooper' 1:Object name:'snow', age:'29', surname:'wyte' 如何将姓氏外部映射为姓氏中的映射数组在mongodb聚合中就是这样 所需输出: _id:asdgrsdv
_id:asdgrsdv
surname:cooper,
comapany:sabesto,
salary:15748
mapped:Array
0:Object
name:'mark',
age:'25',
surname:'cooper'
1:Object
name:'snow',
age:'29',
surname:'wyte'
如何将姓氏
外部映射为姓氏
中的映射数组
在mongodb聚合中就是这样
所需输出:
_id:asdgrsdv
name:'mark',
comapany:sabesto,
salary:15748
age:'25',
surname:'cooper'
试试这个:
db.collection.aggregate([
{
$addFields: {
data: {
$mergeObjects: [
"$$ROOT",
{
$arrayElemAt: [
{
$filter: {
input: "$mapped",
cond: {
$eq: [
"$$this.surname",
"$surname"
]
}
}
},
0
]
}
]
}
}
},
{
$replaceRoot: {
newRoot: "$data"
}
},
{
$project: {
"mapped": 0
}
}
])
有没有办法删除
1:对象名:'snow',年龄:'29',姓氏:'wyte'
并只保留匹配值,因为如果我想在之后加入一个组。中的数据有两个年龄和姓名值,例如:25,29,而不是25@hukkemaaruspetus它已经从输出中“删除”了它。您需要更新集合中的记录吗?是的,如果它看起来像这样会更干净\u id:5e13642ee88247a6b4f2c0f8姓氏:cooper,姓名:'mark',年龄:'25'
。TIA@hukkemaaruspetus在我们过滤映射的字段后,您想做什么?请再次检查@hukkemaruspetus