0

我正在学习 MongoDBUniversity 上的 mongodb 和 nodejs 课程其中一项任务涉及找到在任何状态下记录温度最高的文档,然后在其中添加一个字段“month_high”。我能够找到该州的文档温度最高,但无法更新。代码如下。

有人可以告诉我我做错了什么吗?

var MongoClient=require('mongodb').MongoClient;
MongoClient.connect('mongodb://localhost:27017/course',function(err,db){
var cursor=db.collection("weather").find();
cursor.sort({"State":1,"Temperature":-1});
var oldState,newState;  
cursor.each(function(err,doc){
    if(err)throw err;
    if(doc==null){
         return db.close();
    }
    newState=doc.State;
    if(newState!=oldState){
        var operator={'$set':{"month_high":true}};
            var query={"_id":doc._id};
            console.log(doc._id+" has temp "+doc.Temperature+" "+doc.State);
            db.collection("weather").update(doc,operator,function(err,updated){
                    console.log("hi");//---->Never Logs
                    if(err)throw err;
                   //   console.log(JSON.stringify(updated));

               })

    }   
    oldState=newState;

});





    });
4

2 回答 2

3

我不是 100% 确定,但是鉴于文档中报告的语法,即使不使用它,您也可能必须指定 options 参数:

db.collection("weather").update(doc,operator, options, function(err,updated)

此外,连接可能会在调用回调之前关闭。db.close()如果您删除呼叫,它会改变什么吗?

于 2013-09-01T06:28:01.323 回答
0

集合名称是“数据”。在本作业中,“天气”是数据库名称。

https://education.mongodb.com/courses/10gen/M101JS/2013_October/courseware/CRUD/Homework_2.2/

> use weather
switched to db weather
> db.data.findOne()
于 2013-10-30T13:44:50.813 回答