【问题标题】:Mongodb update() with $unset/$pull not doing $pull带有 $unset/$pull 的 Mongodb update() 不执行 $pull
【发布时间】:2013-03-21 08:54:20
【问题描述】:

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

非常感谢。

【问题讨论】:

标签: node.js mongodb mongoose


【解决方案1】:

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

添加:

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

【讨论】:

  • 对不起,这只是一个错字。
  • 当然!好眼力!就是这样,当我尝试 $pull 时,没有 id 5。谢谢!!!
猜你喜欢
  • 2015-09-14
  • 2015-05-30
  • 2012-06-09
  • 1970-01-01
  • 2020-08-18
  • 1970-01-01
  • 2013-11-06
  • 2014-06-01
  • 2011-11-29
相关资源
最近更新 更多