Вопрос по mongodb – Удаление ключа / значения из существующей записи MongoDB

37

Мне нужно удалить определенный ключ и значение из каждой записи в определенной коллекции. Я посмотрел на удаление, и это, кажется, только для целых записей. Глядя на обновление, я не верю, что обновление определенного ключа с нулевой или пустой строкой дало бы то, что я пытаюсь сделать. Я очень новичок в mongodb, поэтому прошу прощения за мое невежество.

Короче говоря, как я могу повернуть

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

в

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

не удаляя запись и не создавая новую, или используя не-mongodb команды? Спасибо!

Возможный дубликатHow do I remove a field completely from Mongo? Frank Tan

Ваш Ответ

3   ответа
-5

upsert() который вставит вашу строку в качестве нового документа, если_id не существует или обновить существующий документ, если таковой имеется.

2

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

$unset в вызовеupdate().

Как это:

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

И в качествеvikneshwar если вы хотите удалить одно поле из всех (или нескольких) документов, которые вы можете использоватьupdateMany() как это:

db.collection_name.updateMany({}, { $unset : { description : 1} })
Для обновления всех документов в коллекции вы можете использовать:db.collection_name.update({}, {$unset: { description:1}}, false, true);  Последнее верно для нескольких документов обновления
Более новые версии поддерживают более читаемый формат:db.example.update({},{$unset: {words:1}}, {multi: true})
чтобы обновить все документы, вы можете использовать updateMany вместо обновления, как этоdb.collection_name.updateMany({}, { $unset : { description : 1} })
Что я здесь делаю? Я имею в виду, что упоминания только ключевого имени кажется достаточно. 1 не имеет никакого конкретного значения, если нет -1. Есть ли возможность иметь -1, а также "описание"? ключ?
Спасибо! Это сработало отлично. Chris

Похожие вопросы