我有两个不同的数据数组,我必须在一个对象中合并两个数组相同的对象,如何在 MongoDB 聚合的帮助下合并。这是我的两个数组
{"ids" : [
{
"_id" : ObjectId("5ba8d8dfaa988532967029af"),
"level" : 2,
"completed" : 5,
"asset" : ObjectId("5ba8caa1aa98853296702989")
},
{
"_id" : ObjectId("5ba8d8dfaa988532967029b0"),
"level" : 2,
"completed" : 3,
"asset" : ObjectId("5ba8caf6aa9885329670298a")
},
{
"_id" : ObjectId("5ba8d8dfaa988532967029b1"),
"level" : 2,
"asset" : ObjectId("5ba8cb09aa9885329670298b")
}]}
{"total" : [
{
"total" : 1,
"asset" : ObjectId("5ba8caa1aa98853296702989"),
"level" : 2
},
{
"total" : 1,
"asset" : ObjectId("5ba8caf6aa9885329670298a"),
"level" : 2
},
{
"total" : 1,
"asset" : ObjectId("5ba8cb09aa9885329670298b"),
"level" : 2
}]}
在上面的两个数组中显示数据我只想合并资产和级别相同的对象
Expected Result:[{
"level" : 2,
"asset" : ObjectId("5ba8caa1aa98853296702989"),
"total" : 1,
"completed" : 5,
},{
"level" : 2,
"asset" : ObjectId("5ba8caf6aa9885329670298a"),
"total" : 1,
"completed" : 3,
}]
如果你已经有两个对象,那么你可以这样做。但是如果您需要从 mongoDb 获取它,那么您应该在 mongo 聚合中使用 $mergeObject 。
var a = [
{
"_id" : "5ba8d8dfaa988532967029af",
"level" : 2,
"completed" : 5,
"asset" : "5ba8caa1aa98853296702989"
},
{
"_id" : "5ba8d8dfaa988532967029b0",
"level" : 2,
"completed" : 3,
"asset" : "5ba8caf6aa9885329670298a"
}];
var b = [
{
"total" : 1,
"asset" : "5ba8caa1aa98853296702989",
"level" : 2
},
{
"total" : 1,
"asset" : "5ba8caf6aa9885329670298a",
"level" : 2
}];
var output = [];
function extend(obj, src) {
src.forEach(function(key,index) {
if(obj[index]["asset"] == src[index]["asset"] && obj[index]["level"] == src[index]["level"]){
let c = {...obj[index],...src[index]};
output.push(c);
}
});
}
extend(a, b);
console.log(output)
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句