mongo数据库(nodejs + mongo)中没有持久记录更新

时间:2013-03-30 07:22:31

标签: node.js mongodb mongoose

到目前为止,我还没有找到答案(无论是我自己的努力还是在线)。

这是一个NodeJS代码片段,在后端使用mongodb。

在代码中,我遍历一个(mongo)集合并更新每个记录中的特定字段。

我无法持久,将记录更改为数据库。

代码: -

var mongoose = require('mongoose')
  ;

var Centers = mongoose.model('centers', new mongoose.Schema({
    "ChestClinic": String,
    "TestCenterName": String,
    ...
    "loc": {
       "type": {
       "lon": Number,
       "lat": Number
     },
     "index": '2d'
   }
});

mongoose.connect("mongodb://localhost/tblabsdb");

Centers.find({}, function(err, recs) {
    var me = this
      ;
    async.forEachSeries ( recs, function(rec, callback) {
        var loc = { lon: 100, lat: 100 };
        rec.setValue ( 'loc', loc);
        rec.save ( function (err, rec) {
            if ( !err ) {
               console.log( rec );
            } else {
               console.log ( 'Error while saving' );
            }
           callback();
       });
    }, function(err) {
        console.log ( '\ncomplete' );
        process.exit();
    });
})

当我使用mongo命令在shell中打开此数据库时,我看到的“loc”值仍为0,0(而不是100,100)。

感谢任何修复建议。

由于 海军

1 个答案:

答案 0 :(得分:3)

loc是一个混合类型字段。当你改变它们时,需要告诉Mongoose在保存之前字段已经改变:

rec.setValue('loc', loc);
rec.markModified('loc');
rec.save(...);

为什么那是is explained here