Deleting a key/value from existing MongoDB entry

2019-01-21 19:14发布

问题:

I need to delete a certain key and value from every entry in a particular collection. I've looked into remove and that seems to be for only entire entries. Looking at update, I don't believe updating a particular key with null or an empty string would achieve what I'm trying to do. I'm very much a beginner with mongodb, so please excuse my ignorance.

Long story short, how can I turn

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

into

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

without deleting the entry and creating a new one, or using any non-mongodb commands? Thanks!

回答1:

Try $unset in a call to update().

Like this:

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

And, as vikneshwar commented, if you want to remove one field from all (or multiple) documents you can use updateMany() like this:

db.collection_name.updateMany({}, { $unset : { description : 1} })


回答2:

To reference a package and remove various "keys", try this

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


回答3:

Also think about upsert() that will insert your row as a new document if _id does not exist or update the existing document if any.



标签: mongodb