Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/474.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
Javascript monogodb脚本中未定义的字符?_Javascript_Mongodb - Fatal编程技术网

Javascript monogodb脚本中未定义的字符?

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"}}, {

我在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"}},
 {
     $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} } }] ); 我根据您的建议修改了我的查询,它告诉我管道未定义