我想计算.js文件中的平均值,并在Mongo DB中的集合中插入所有文档的结果,但下面的代码不起作用。
db.createCollection("myCol");
db.myCol.insert( { item: "card", qty: 15 } );
db.myCol.insert( { item: "card", qty: 92 } );
var mean = db.myCol.aggregate(
[
{
$group:
{
_id: "$card",
average: { $avg: "$qty" }
}
}
]
);
db.myCol.updateMany(
{ "item": { $eq: "card" } },
{
$set: { "mean" : mean },
}
)
我使用命令
在Mongo Shell中运行.js文件load (jsfile.js)
答案 0 :(得分:0)
db.createCollection("myCol");
db.myCol.insert( { item: "card", qty: 15 } );
db.myCol.insert( { item: "card", qty: 92 } );
var mean = db.myCol.aggregate(
[
{
$group:
{
_id: "$item",
average: { $avg: "$qty" }
}
}
]
).toArray();
db.myCol.updateMany(
{ "item": { $eq: "card" } },
{
$set: { "mean" : mean },
}
)
你应该尝试这个。它会起作用。
<强>问题强>
返回cursor
个对象的操作很少。在您的情况下,aggregation
查询的游标对象存储在mean
变量中。这就是您没有获得所需值的原因,而cursor
集合中myCol
对象的更新已被更新。
<强>解决方案强>
我已使用toArray
方法更新了代码,该方法将cursor
转换为对象数组。所以这肯定会有效。
让我知道它是否对你有所帮助。