如何通过合并MongoDB中的另一个文档来更新激励文档
我想用另一个具有相同架构且属于相同实体的文档更新一个文档。 可以在传感器阵列中添加新的传感器对象,或者只是在下次测量时会有新的值记录 激励文档如何通过合并MongoDB中的另一个文档来更新激励文档,mongodb,mongodb-.net-driver,Mongodb,Mongodb .net Driver,我想用另一个具有相同架构且属于相同实体的文档更新一个文档。 可以在传感器阵列中添加新的传感器对象,或者只是在下次测量时会有新的值记录 激励文档 "deviceName": "test", "isActive": true, "sensors": [{ "id": "sgfgssfgs", "values": { "1": 232, "2": 3434, "3": 5454 } }, {
"deviceName": "test",
"isActive": true,
"sensors": [{
"id": "sgfgssfgs",
"values": {
"1": 232,
"2": 3434,
"3": 5454
}
},
{
"id": "fgffgf",
"values": {
"1": 232,
"2": 3434,
"3": 5454
}
}
]
}
我要用于合并的新文档
{
"deviceName": "test",
"isActive": true,
"sensors": [{
"id": "sgfgssfgs",
"values": {
"4": 5454
}
},
{
"id": "fgffgf",
"values": {
"4": 5454
}
}
]
}
这就是我想看到的结果
{
"deviceName": "test",
"isActive": true,
"sensors": [{
"id": "sgfgssfgs",
"values": {
"1": 232,
"2": 3434,
"3": 5454,
"4": 5454
}
},
{
"id": "fgffgf",
"values": {
"1": 232,
"2": 3434,
"3": 5454,
"4": 5454
}
}
]
}
mongodb版本:3.6+
db.collection.aggregate([
{
$unwind: "$sensors"
},
{
$group: {
_id: {
deviceName: "$deviceName",
sensor: "$sensors.id",
},
isActive: {
$first: "$isActive"
},
values: {
$mergeObjects: "$sensors.values"
}
}
},
{
$group: {
_id: "$_id.deviceName",
isActive: {
$first: "$isActive"
},
sensors: {
$push: {
id: "$_id.sensor",
values: "$values",
}
}
}
},
{
$project: {
deviceName: "$_id",
isActive: 1,
sensors: 1,
_id: 0,
}
}
])
您可以在此处进行测试: