Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/38.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 如何从mongodb集合中获取和分组数据,其中每个对象在一个组中具有相同的值_Node.js_Mongodb_Mongoose_Merge_Grouping - Fatal编程技术网

Node.js 如何从mongodb集合中获取和分组数据,其中每个对象在一个组中具有相同的值

Node.js 如何从mongodb集合中获取和分组数据,其中每个对象在一个组中具有相同的值,node.js,mongodb,mongoose,merge,grouping,Node.js,Mongodb,Mongoose,Merge,Grouping,已经回顾了问题和解决方案:但没有对所选数据进行清晰理解并对其进行分组 我拥有的MongoDB模式和数据: 货币模型 [ { currency: 'USD', status: 1, user_id: '123', price: 43.67, quantity: 22019 }, { currency: 'USD', status: 1, user_id: '234', price: 43.69, quantity: 22

已经回顾了问题和解决方案:但没有对所选数据进行清晰理解并对其进行分组

我拥有的MongoDB模式和数据:

货币模型

 [ { currency: 'USD',
     status: 1,
     user_id: '123',
     price: 43.67,
     quantity: 22019 },
  { currency: 'USD',
    status: 1,
    user_id: '234',
    price: 43.69,
    quantity: 22019,
  },
  { currency: 'USD',
    status: 1,
    user_id: '456',
    price: 43.67,
    quantity: 8,
   }... more 100 data ] 
因此我想要什么:

希望合并第一条和第三条记录的数量值,因为它具有相同的价格。 包含记录数量的相同价格被合并


可以使用查询/过滤/投影吗?我们如何有效地获取数据并基于相同的价格条件进行合并,即总数量为22019+8价格为43.67

您可以尝试以下方法:

db.sales.aggregate(
   [
     {
       $group:
         {
           _id: "$price",
           quantity: { $sum:  "$quantity" },
           count: { $sum: 1 }
         }
     }
   ]
)

作为@prasad_uu在评论部分给出的解决方案, -使用mongoose中的聚合,根据价格组获取数量总和:

CurrencyModel.aggregate([
         { $group: 
             { _id: "$price", 
               qty: { $sum: "$quantity" } 
             } 
         } 
    ]).then(data => {console.log(data);})

合并数量后,价格将保持不变,其他字段(如
user\u id
?@prasad\u)将不会发生任何变化。我只是想得到基于不同价格的总数量。这个分组阶段将这样做:
{$group:{{id:$price,qty:{$sum:$quantity}}
@prasad}我也可以用mongoose吗?语法可能不同。您必须查看猫鼬文档。