Javascript monogodb脚本中未定义的字符?
我在mongodb shell中使用load命令(“test.js”)运行以下脚本Javascript monogodb脚本中未定义的字符?,javascript,mongodb,Javascript,Mongodb,我在mongodb shell中使用load命令(“test.js”)运行以下脚本 db = connect("localhost:27017/CapabilitiesDB"); db2 = connect("localhost:27017/SAW"); db3 = connect("localhost:27017/dev"); var raw = db2.Requests.aggregate([ {$match:{"AssignedToPerson":"Chase Wick"}}, {
db = connect("localhost:27017/CapabilitiesDB");
db2 = connect("localhost:27017/SAW");
db3 = connect("localhost:27017/dev");
var raw = db2.Requests.aggregate([
{$match:{"AssignedToPerson":"Chase Wick"}},
{
$group:
{
_id: "$AssignedToPerson",
WorkingDuration : { $avg : "$WorkingDuration" }
}
},
{$project:{_id : 0, "WorkingDuration": 1}}
]);
db3.test.update(
{ "name" : "Chase Wick" },
{
$set:
{
"time" : raw.result[0].WorkingDuration
}
}
);
当我在RoboMongo或mongoshell命令行中运行此查询时,它工作得非常好。但是,当我通过脚本运行此查询时,它失败,并说无法加载未定义的属性0。基本上,这个脚本要做的是从一个db中获取某人工作的平均时间,然后将其插入到一个用户表中,该表保存了他们的个人平均时间 调用聚合函数后,
raw
变量的内容是什么?在我看来,尝试访问raw.result[0]
时出现错误,因为未定义raw.result
。我的变量查询得到这个{“result”:[{“WorkingDuration”:794.1458916675832100}],“ok”:1.0000000000000000}使用$set函数的raw.result[0].WorkingDuration是我获得更新查询以更新用户集合中的平均时间的唯一方法。如果我没有使用raw.result[0]。WorkingDuration,它将输入整个数组,而不仅仅是值。您可以使用该方法迭代光标并返回数组中的文档,如下所示:var raw=db2.Requests.aggregate(pipeline.toArray()
然后使用raw[0]更新time
键.WorkingDuration
var raw=db2.Requests.aggregate(pipeline).toArray([{$match:{$and:[{“AssignedToPerson”:“Chase Wick”},{“WorkingDuration”:{$ne:null}]}},{$group:{id:$AssignedToPerson”,WorkingDuration:{$avg:$WorkingDuration} } }] ); 我根据您的建议修改了我的查询,它告诉我管道未定义