2012-07-23 79 views

回答

10

这是可能的,但它需要一个不同的命令。您正在寻找findAndModify command

如果您将选项设置为{query: ..., remove: true, new: false},您将删除单个文档并返回已删除的文档。

一些注意事项

  • new是在许多语言中的关键字,请确保您正确包装标志的文本。
  • findAndModify只能使用单个文档。这适用于删除_id,但不适用于范围删除。
+1

当'remove:true'时忽略'new'参数吗?在[node-mongodb-native docs]中找到它(https://github.com/mongodb/node-mongodb-native#find-and-modify)和[here](http://docs.mongodb.org/手动/参考/命令/ findAndModify /) – balazs 2014-01-11 19:45:53

+0

很可能它被忽略。这些文档是在写出这个答案后大约12个月写出来的。这表明,你可能是对的,考虑到返回值是相同的,“new”标志可能会被忽略。 – 2014-01-12 02:55:29

+0

如何去除返回符合条件的文档的范围? – thethakuri 2016-06-04 07:03:26

2
db.collection('mycollection').findOneAndDelete({ 
    id: '123456' 
}, function (error, response) { 
    response.value;// returns the deleted object, but no longer exists in the database 
}); 
+4

尽管这段代码可以解决这个问题,[包括解释](// meta.stackexchange.com/questions/114762/explaining-entirely-code-based-答案)确实有助于提高发布的质量。请记住,您将来会为读者回答问题,而这些人可能不知道您的代码建议的原因。也请尽量不要用解释性注释来挤占代码,这会降低代码和解释的可读性! – kayess 2016-11-23 10:50:28

相关问题