0

我正在尝试从 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 不删除空文档?

提前谢谢了。

4

1 回答 1

0

您的updateArray函数需要两个参数,但您要传递三个参数。我认为您根本没有发送{ $pull: {'items' : null} }给司机。

添加:

一旦您取消第 5 项,您的匹配文档将不再匹配任何内容。第二次更新时,尝试用 替换objmatch{ }这应该只是删除任何空值。

于 2013-03-21T11:18:45.627 回答