使用Mongoose从MongoDB文档中删除一个键

我正在使用Mongoose库来访问具有node.js的MongoDB

有没有办法从文档中删除密钥 ? 即不只是将值设置为空,但删除它?

User.findOne({}, function(err, user){ //correctly sets the key to null... but it's still present in the document user.key_to_delete = null; // doesn't seem to have any effect delete user.key_to_delete; user.save(); }); 

在早期版本中,您需要下载node-mongodb-native驱动程序。 每个模型都有一个包含node-mongodb-native提供的所有方法的集合对象。 所以你可以这样做,

 User.collection.update({_id: user._id}, {$unset: {field: 1 }}); 

从2.0版开始,您可以:

 User.update({_id: user._id}, {$unset: {field: 1 }}, callback); 

而从版本2.4开始,如果你已经有一个模型的实例,你可以这样做:

 doc.field = undefined; doc.save(callback); 

你会想这样做:

 User.findOne({}, function(err, user){ user.key_to_delete = undefined; user.save(); }); 

我使用mongoose和使用上述任何function做我的要求。 该函数编译错误免费,但该字段仍然会保留。

 user.set('key_to_delete', undefined, {strict: false} ); 

为我做了诡计。

在mongo语法删除一些你需要做的事情如下:

 { $unset : { field : 1} } 

在mongoose似乎是一样的。

编辑

检查这个例子。

这可能是一个侧面的问题,如使用

 function (user) 

代替

 function(err, user) 

寻找callback? 只是试图帮助,因为我已经有这种情况。

你可以使用delete user._doc.key