MongoDB - 我无法删除或取消设置嵌入式文档

时间:2014-01-30 17:52:50

标签: mongodb mongodb-query

这似乎应该很简单。我有一个带有嵌入式文档的集合。我只是想使用mongodb shell删除该键名称(链接)的每个嵌入文档,但我尝试过的任何东西都没有用。我也试过指定个别的_id,但这也不起作用。这些集合中的id不是标准的mongo对象id

MongoDB版本是2.4.8。

我从这开始,但它没有效果:

db.products.update({}, { $unset: { links: 1 } }, { multi: true} );

所有链接属性都保持不变。

这是一个示例文档(我没有显示其他字段,但它们存在);

{ "_id" : "54227cf1-096b-4715-ae52-c2c9df3e8b6a", "links" : { "_id" : "9793093c-2422-48f5-9961-ca85e3896e98", "url" : "http://www.yahoo.com", "merchant" : "eae1ec9d-bf04-471d-82c9-c6b235d67112", "expires" : "07/49/2016", "created_at" : ISODate("2014-01-28T02:50:05.976Z"), "updated_at" : ISODate("2014-01-28T02:50:05.976Z") } }

这是我尝试过的众多变化之一:

> db.product.update({_id: "54227cf1-096b-4715-ae52-c2c9df3e8b6a"}, { $unset: {links:  ""}});
  

db.runCommand({getLastError:1})   {       “updatedExisting”:false,       “n”:0,       “connectionId”:1,       “err”:null,       “好的”:1   }

如何设置呢?

> db.product.update({_id: "54227cf1-096b-4715-ae52-c2c9df3e8b6a"}, { $set: {links:  ""}});
  

db.runCommand({getLastError:1})   {       “updatedExisting”:false,       “n”:0,       “connectionId”:1,       “err”:null,       “好的”:1   }

更新和结论

在与其他人核实语法正确并且应该工作之后,我开始将环境(流浪者/虚拟盒)视为可能的问题。虽然这与它有相关的危险(rtfm!)没有一个是我的开发数据库的关注,我最终运行db.repairDatabase()以及重新启动我的工作站。事情开始在此之后再次工作,但我犹豫要完全排除pebkac。

0 个答案:

没有答案