2012-04-13 62 views
33

我需要删除特定集合中每个条目的某个键和值。我已经考虑过删除,这似乎只针对整个条目。看更新,我不相信用null或空字符串更新特定的键将实现我想要做的。我非常喜欢mongodb的初学者,所以请原谅我的无知。删除现有MongoDB条目中的键/值

长话短说,我又怎么能

{ 
    "_id" : 1234, 
    "name" : "Chris", 
    "description" : "Awesome" 
} 

{ 
    "_id" : 1234, 
    "name" : "Chris" 
} 

而不删除条目,并创建一个新的,或使用任何非MongoDB的命令?谢谢!

+0

的可能的复制[如何完全从蒙戈删除字段?](http://stackoverflow.com/questions/6851933/how-do-i-remove-a-field-completely-from-mongo) – 2016-10-13 18:18:43

回答

68

尝试$unset致电update()

换句话说,

db.collection_name.update({ _id: 1234 }, { $unset : { description : 1} });

应该工作。 Link

+1

谢谢!这工作完美。 – Chris 2012-04-13 19:15:14

+15

要更新集合中的所有文档,您可以使用:'db.collection_name.update({},{$ unset:{description:1}},false,true);'最后一个true用于多个文档更新 – 2013-09-16 09:33:40

+2

较新版本支持更可读的格式:'db.example.update({},{$ unset:{words:1}},{multi:true})' – phocks 2016-07-04 01:00:34

-5

还想一想upsert(),如果_id不存在或将更新现有文档(如果有),将插入您的行作为新文档。

2

要引用一个包,并消除各种“钥匙”,试试这个

db['name1.name2.name3.Properties'].remove([ { "key" : "name_key1" }, { "key" : "name_key2" }, { "key" : "name_key3" })]