多重更新在MongoDB中不起作用

时间:2012-12-20 13:05:03

标签: mongodb

我有一个我从CSV填充的集合,但是在记录中有一些我不再需要的字段,所以我想删除它们,但它似乎没有做任何事情。这是来自CLI:

> db.stops.update({}, { $unset: {stop_lat: 1, stop_lon: 1} }, { multi: 1 })
> db.stops.findOne({stop_id: 1000})

{
  "_id" : ObjectId("50d30386884be8bf2a6c208a"),
  "stop_id" : 1000,
  // some other fields
  "stop_lat" : -27.339115,
  "stop_lon" : 153.043884,
}

我在这里做错了什么?

3 个答案:

答案 0 :(得分:18)

您的语法不正确。 CLI中的更新操作适用于2.2之前的版本,如下所示:

  

更新(条件,更新,提交,多重

纠正后可行:

> db.stops.update({}, { $unset: {stop_lat: 1, stop_lon: 1} }, false, true)
> db.stops.findOne({stop_id: 1000})
{ "_id" : ObjectId("50d30386884be8bf2a6c208a"), "stop_id" : 1000 }

编辑:正如Sammaye指出你使用的语法在mongod的最新稳定版本上有效。

答案 1 :(得分:0)

使用节点本机驱动程序时遇到了同样的问题。

{multi:1}不起作用

{multi:true}

很奇怪

答案 2 :(得分:0)

  

请尝试这种方式:

2.0以上版本的CLI如下所示:

更新(条件,更新,提交,多个)

示例:

db.collectionname.update({condition},{$ set:{groupid:'541ae260514ca0b76981222f'}},false,{multi:true});