环境
node -v
v10.0.0
// native driver "mongodb": "^3.0.8",
期望的行为
我要更新文档并返回原始文档。
实际行为
将返回更新的文档,而不是原始文档。
我尝试过的事情
最初,我在看findAndModify
:
http://mongodb.github.io/node-mongodb-native/3.1/api/Collection.html#findAndModify
但是那里的文档说它已被弃用,并改为use findOneAndUpdate, findOneAndReplace or findOneAndDelete instead
。
所以我尝试了:
collection.findOneAndUpdate(filter, update, function(err, result) {
if (err) {
res.send(err);
} else {
// find object in array of objects ('statements') and return the 'text' property value
var old_text = result.value.statements.find(x => x.id === "my_great_id").text;
console.log(old_text);
}
});
http://mongodb.github.io/node-mongodb-native/3.1/api/Collection.html#findOneAndUpdate
文档说选项returnOriginal
是默认选项,但是它记录的是更新后的值,而不是原始值。
编辑:
问题出在代码的其他地方-上面的代码按预期工作。
答案 0 :(得分:1)
默认情况下,findOneAndUpdate
函数返回原始文档。
但是,在您的情况下,将{new: false}
添加到findOneAndUpdate
函数的第三个参数中即可。
collection.findOneAndUpdate(filter, update, {new: false}, function(err, result) {
if (err) {
res.send(err);
} else {
// find object in array of objects ('statements') and return the 'text' property value
var old_text = result.value.statements.find(x => x.id === "my_great_id").text;
console.log(old_text);
}});
答案 1 :(得分:0)
问题出在代码的其他地方-原始帖子中的代码按预期工作。