MongoDB: семантика модификатора обновления «$ unset»

В MongoDB модификатор обновления unset работает следующим образом:

Рассмотрим базу данных Mongo DB db с коллекция пользователей . Пользователи содержат документ следующего формата:

//Document for a user with username: joe
{
    "_id" : ObjectId("4df5b9cf9f9a92b1584fff16"),
    "relationships" : {
            "enemies" : 2,
            "friends" : 33,
            "terminated" : "many"
    },
    "username" : "joe"
}

Если я хочу удалить завершенный ключ, я должен указать модификатор обновления $ unset следующим образом:

>db.users.update({"username":"joe"},{"$unset":{"relationships.terminated": "many"}});

Мой вопрос: почему мне необходимо указать ПАРУ ВСЕХ КЛЮЧЕВЫХ ЗНАЧЕНИЙ , чтобы $ unset работал, вместо простого указания:

>db.users.update({"username":"joe"},{"$unset":{"relationships.terminated"}});

Mon Jun 13 13:25:57 SyntaxError: missing : after property id (shell):1

Почему бы и нет?

EDIT :

чтобы указать всю пару «ключ-значение» в соответствии со спецификациями JSON или добавить «1» в качестве значения к оператору , почему оболочка не может выполнить замену «1» сама ? Почему не предусмотрена такая функция? Есть ли подводные камни в предоставлении такой поддержки?

5
задан brud 13 June 2011 в 08:30
поделиться