我正在尝试从MongoDB文档中的数组中删除一些项目:
doc1
items
item
id=1
item
id=2
item
id=3
doc2
items
item
id=4
item
id=5
item
id=6
我用它来移除例如项目id = 5:
(...)
updateItems({'items.id': 5}, { $unset: { 'items.$': 1 }}, { $pull: {'items' : null} });
(...)
function updateItems(objmatch, objunset, objpull){
coremodels.getProfileTable(req).update(
objmatch,
objunset,
{multi: true}, function(err) {
coremodels.getProfileTable(req).update(
objmatch,
objpull,
{multi: true}, function(err) {
console.log('COMPLETED');
});
(...)
$ unset工作正常,但$ pull似乎不起作用。此操作的最终结果是空(Null)项目5。
任何想法为什么$ pull不会删除空文档?
非常感谢提前。
答案 0 :(得分:0)
你的updateArray
函数有两个参数,但是你传递了三个参数。我认为你根本不会向驱动程序发送{ $pull: {'items' : null} }
。
<强>加了:强>
取消第5项后,您的匹配文档将不再匹配任何内容。第二次更新时,请尝试将objmatch
替换为{ }
,这应该只删除任何空值。