我正在尝试从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没有删除空文档吗?
在此之前,非常感谢您。
发布于 2013-03-21 19:18:46
您的updateArray函数有两个参数,但您传递给它的是三个。我认为你根本没有把{ $pull: {'items' : null} }发送给司机。
添加了:
一旦您使第5项无效,您的匹配文档将不再匹配任何内容。第二次调用update时,尝试用{ }替换objmatch,这应该只会删除任何空值。
https://stackoverflow.com/questions/15542982
复制相似问题