当前位置: 首页 > 知识库问答 >
问题:

$pull-in-MongoDb未按预期工作[重复]

利稳
2023-03-14

我有一个数组,我试图删除数据的基础上_id,但部分数据被拉出和NULL值填充的地方。

大堆

vehicle : [
{
  data :{ 
  _id:"adkabd",
  "type":"ffff"
  },
  "_id":"amklam",
  "history":[],
  "addedon":"date"
},
{
  data :{ 
  _id:"adkcbbd",
  "type":"ffff"
  },
  "_id":"amklam",
  "history":[],
  "addedon":"date"
  }]

现在我想提取这些数据

{
  data :{ 
  _id:"adkabd",
  "type":"ffff"
  },
  "_id":"amklam",
  "history":[],
  "addedon":"date"
}

完全基于\u id:“adkabd”

更新的命令:

async.series(
                [
                    function(callback) { 
                        Models.DispatchOrder.update({'vehicle.data._id': criteria._id},
                        {$unset:{'vehicle.$':""}},
                         callback()
                        );  
                    },
                    function(callback){
                        Models.DispatchOrder.update(
                        {'vehicle': null},
                        {$pull: {'vehicle':null}},
                         callback()
                        );  
                    }
                ],
                function(err,resp){
                if(err)
                    callback(err)
                callback(resp)
                }
              );

错误:Trace: ERROR OCCURED[未定义,未定义]

请暂时忽略括号。目前在我得到的输出中

data : null
"_id":"amklam",
"history":[],
"addedon":"date"

控制器中的代码:

var deleteVehicle = function(params, callbackRoute){
            var projection = {};
            var options = {limit: 1};
                var criteria = {
                    _id: params._id
                };

            Services.deleteDispatchVehicle(criteria, function (err, resp) {
                if (err) {
                    callbackRoute(err)
                } else {
                    if(resp.result.n === 0) 
                        return callbackRoute("Id not found");
                        callbackRoute(null, {});
                }
            })

        }

共有1个答案

傅宏恺
2023-03-14

这应该行得通

Model.collection.update({'vehicle.data._id': params._id},
                        {$pull : {vehicle: {'data._id': params._id}},
 类似资料:
  • 我目前正试图研究并发性,特别是“volatile”关键字。 通过声明计数器变量为volatile,所有对计数器变量的写入都将立即写回主存。此外,计数器变量的所有读取都将直接从主存中读取。下面是计数器变量的volatile声明的外观 和 当线程写入易失性变量时,不仅易失性变量本身会被写入主内存。此外,线程在写入易失性变量之前更改的所有其他变量也会刷新到主内存中。当一个线程读取一个易失性变量时,它还将

  • 我正在使用spring Roo并希望访问Controller类中的一个bean,该类在ApplicationContext.xml中具有以下配置: 配置类本身是: 在我的Controller中,我认为一个简单的Autowired注释应该可以完成这项工作 在启动过程中,spring在setSkipWeeks方法中打印消息。不幸的是,每当我在控制器中调用config.getSkipWeeks()时,它

  • 当我运行以下程序时,它只打印 然而,从Java 8的equalsIgnoreCase文档中我们发现: 如果以下至少一项为真,则两个字符c1和c2被视为相同的忽略情况: •对每个字符应用java.lang.character.ToUpperCase(char)方法会产生相同的结果 所以我的问题是为什么这个程序不打印 在这两种操作中,都使用了大写字符。

  • 我试图使用来传输我根据前面的问题设置的自定义标头。 我在文件中读到... 我的属性包括:

  • 我正在和selenium一起工作,刮一些数据。 有一个按钮在页面上,我正在点击说“Custom_Cols”。这个按钮为我打开了一个窗口,我可以在那里选择我的列。 我的问题是为什么新窗口上的元素不可见,即使我正在等待元素的可见。补充一下,我已经尝试增加延迟时间,但我还是会偶尔出现这个错误。 我的密码在这里