到目前为止我还没有找到答案(无论是通过我自己的努力还是在网上)。
这是一个 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)。
感谢任何修复此问题的建议。
谢谢 海军
最佳答案
loc
是一个混合类型字段。当您更改这些内容时,需要在保存之前告知 Mongoose 该字段已更改:
rec.setValue('loc', loc);
rec.markModified('loc');
rec.save(...);
为什么这是is explained here .
关于node.js - 对记录的更新不会持久保存在 mongodb 数据库中(node js + mongo),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15716102/