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); } }); 

尝试这个