使用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