В MongoDB сброс модификатора обновления работает следующим образом:
Рассмотрим базу данных Mongo DB db с коллекцией users . Пользователи содержат Документ следующего формата:
//Document for a user with username: joe
{
"_id" : ObjectId("4df5b9cf9f9a92b1584fff16"),
"relationships" : {
"enemies" : 2,
"friends" : 33,
"terminated" : "many"
},
"username" : "joe"
}
Если я хочу удалить завершенный ключ, я должен указать модификатор $ unset update следующим образом:
>db.users.update({"username":"joe"},{"$unset":{"relationships.terminated": "many"}});
У меня такой вопрос, почему мне нужно указать ENTIRE KEY VALUE PAIR , чтобы $ unset работал, вместо простого указания:
>db.users.update({"username":"joe"},{"$unset":{"relationships.terminated"}});
Mon Jun 13 13:25:57 SyntaxError: missing : after property id (shell):1
Почему бы и нет?
EDIT
Если путь к $ unset состоит в том, чтобы указать всю пару ключ-значение в соответствии со спецификациями JSON или добавить «1» в качестве значения для оператора, почему Shell не может выполнить «1 "само замещение ? Почему такая функция не предоставляется? Есть ли какие-либо подводные камни для оказания такой поддержки?