我试图根据mongo的聚合方法得到一组结果,并根据返回我试图在所有这些中添加属性。聚合方法为我提供了最高的数量。从一个综合体的特定商店一个月内的销售额。我想将属性highestSales添加到它返回的那些文档中。我的疑问是:
var shops = db.data.aggregate([
{
$group: {
_id: "$shopName",
Sales: { $max: "$Sales" }
}
}
]);
商店变量为我提供了5个商店名称,如下所示:
{ "_id" : "Shop1", "Sales" : "$83,000" }
{ "_id" : "Shop2", "Sales" : "$69,000" }..
但是,当我试图在商店中进行循环时,它不允许我添加新的属性。我假设的原因是商店不是一系列的对象。任何人都可以告知同样的返回类型是什么?这可以通过其他方式实现吗?
答案 0 :(得分:0)
aggregate()
方法将游标返回到聚合管道操作的最后阶段生成的文档,或者如果包含explain选项,则提供有关聚合操作处理的详细信息的文档。
您需要向商店变量添加toArray()
方法,或者从aggregate()
方法添加结果光标,例如
var shops = db.data.aggregate([
{
$group: {
_id: "$shopName",
Sales: { $max: "$Sales" }
}
}
]).toArray();
toArray()
方法返回一个包含游标中所有文档的数组。该方法完全迭代光标,将所有文档加载到RAM中并耗尽光标。