Nedb更新正在添加新logging,而不是更新现有logging
我真的很苦恼,所以我希望有人能帮助我理解为什么我得到这种行为。
我有一个文件,其中包含以下logging
{"Id":"","documentPath":"mission.pdf","dName":"BIOLOGY TEST 1110","dCourseNumber":"1110","dSubject":"BIOL","dTerm":"201690","dTitle":"BIOLOGY TEST 1110","student":"491502","timestamp":1486152313972,"assessed":true,"errorCmt":"","uploadDate":"2/3/2017 14:5","_id":"QwKHQ8sRQdivRJDp"} {"Id":"","documentPath":"university.pdf","dName":"BIOLOGY TEST 1111","dCourseNumber":"1111","dSubject":"BIOL","dTerm":"201690","dTitle":"BIOLOGY TEST 1111","student":"491502","timestamp":1486151521825,"assessed":false,"errorCmt":"","uploadDate":"2/3/2017 13:52","_id":"mh0pdGERB6fZU4s3"}
在我的testdb.js文件中我有:
var Datastore = require('nedb'); var db = new Datastore({filename: './db.db', autoload: true}); db.update({ _id: "QwKHQ8sRQdivRJDp"}, { $set: { assessed: true} }, {}, function (err, numReplaced) { console.log("replaced---->" + numReplaced); }); db.find({}).exec(function (err, docs) {console.log(docs);});
我在最后执行的查找表明,我更新了一条logging,并打印出logging,并且看起来像我期望的那样。 如果我打开db.db我现在看到这个:
{"Id":"","documentPath":"mission.pdf","dName":"BIOLOGY TEST 1110","dCourseNumber":"1110","dSubject":"BIOL","dTerm":"201690","dTitle":"BIOLOGY TEST 1110","student":"491502","timestamp":1486152313972,"assessed":true,"errorCmt":"","uploadDate":"2/3/2017 14:5","_id":"QwKHQ8sRQdivRJDp"} {"Id":"","documentPath":"university.pdf","dName":"BIOLOGY TEST 1111","dCourseNumber":"1111","dSubject":"BIOL","dTerm":"201690","dTitle":"BIOLOGY TEST 1111","student":"491502","timestamp":1486151521825,"assessed":false,"errorCmt":"","uploadDate":"2/3/2017 13:52","_id":"mh0pdGERB6fZU4s3"} {"Id":"","documentPath":"mission.pdf","dName":"BIOLOGY TEST 1110","dCourseNumber":"1110","dSubject":"BIOL","dTerm":"201690","dTitle":"BIOLOGY TEST 1110","student":"491502","timestamp":1486152313972,"assessed":true,"errorCmt":"","uploadDate":"2/3/2017 14:5","_id":"QwKHQ8sRQdivRJDp"}
任何想法为什么我的logging是与新的价值重复,而不是只是得到更新?
所以事实certificate这是在文档中解释。
在底层,NeDB的持久性使用append-only格式,这意味着出于性能的原因,所有更新和删除实际上都会在数据文件的末尾添加行。
NeBD使用append-only patter的性能,如果你想真正“更新”和“删除”你应该压缩你的数据库,看到这个相关的问题,我相信这个explenation让你更多地了解Nedb – nedb方法更新和删除创build新的条目,而不是更新现有的
return this.db.update({ _id: "QwKHQ8sRQdivRJDp"}, { $set: { assessed: true} }, function (err, numReplaced) { if ( err ) { console.log("error---->" + err); } else { console.log("replaced---->" + numReplaced); } });
尝试这个