使用mongoose为mongo对象设置字段为空

时间:2014-04-14 13:12:02

标签: node.js mongodb mongoose

我有一个包含嵌入式子文档的文档对象。 要清除"清除"子文件,我试试这个:

obj.mysub = {};
obj.save();

这不起作用,我的对象仍然有mysub子文档的内容。 但是这个:

obj.mysub = undefined;
obj.save();

这确实有效,它会从对象中删除我的子文档。

我的问题是为什么第一个版本不起作用?在第一个例子中,Mongodb / Mongoose发生了什么?

[edit]为什么在上面的第一个例子中没有保存空对象。

1 个答案:

答案 0 :(得分:0)

Mongoose有点“保护”你免受很多逻辑的影响,就像你已经在它自己的内部解决方案中提出的那样。因此,如果您确实需要执行此操作,请在较低级别对驱动程序执行此操作,如下所示:

YourModel.update(
   { /*statement matching your document as a query */ },
   { "$unset": { "mysub": 1 } }
)

根据正常的MongoDB逻辑,这将工作并删除所选文档中的该级别。有关详情,请参阅$unset运算符。