比较同一文档中的两个数组字段

卡纳夫帕吉

我有两个不同的数据数组,我必须在一个对象中合并两个数组相同的对象,如何在 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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

比较同一文档的两个字段

如何在 ElasticSearch 中比较同一文档中的两个字段?

如何在Mongodb中通过仲裁计算同一文档中两个数组的元素频率

如何在mongo中检查同一文档中的两个值?

如何连接同一文档中的数组?

如何在MongoDB更新中将字段的值推入同一文档的另一个数组字段中

在一个数组中合并两个对象,一个对象的键嵌套在 Mongo DB 的同一文档中比另一个更深

比较同一文档Firestore

用同一文档中数组的第一个元素替换字段值

在Mongoose的同一文档中查询3个不同嵌套数组中的字段?

使用同一文档中的字段减少 mongodb 中的字段

mongodb-同一文档的两个依赖聚合

同一文档中以及文档之间的Concat数组

如何根据两个字段值导出唯一文档?

通过ID将对象以原子方式从一个数组移动到同一文档中的另一个数组

在 Firestore 中更新同一文档的 10 个不同字段。顺序重要吗?

同一文档中3个字段的平均值

MongoDB:更新同一文档的嵌套元素中的字段

如何在mongo中匹配来自同一文档的字段值?

在Firestore交易中更新同一文档的多个字段时的定价

在多个网站中引用同一文档

同一文档中的不同内容

同一文档中的img src = svg

MongoTemplate更新为同一文档在数组中设置多个对象

使用聚合将文档的一个字段与同一文档的数组大小进行匹配

使用字段值更新同一文档中的另一个字段

使用同一文档中的值从JSONB文档中的数组中选择项目

MongoDB 聚合:用同一文档中数组中的相应对象替换 ID 数组

MongoDB对同一文档中的多个字段进行分组和计算结果