这似乎应该很简单。我有一个带有嵌入式文档的集合。我只是想使用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。