MongoDBでは、更新修飾子unsetは次のように機能します。
コレクションusersを持つMongoDBデータベースデータベースについて考えてみます。ユーザーには、次の形式のドキュメントが含まれています。
//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
なぜだめですか?
編集:
$ unsetへの方法が、JSON仕様に従ってキーと値のペア全体を指定すること、またはステートメントに値として「1」を追加することである場合、シェルが「1」の置換自体を実行できないのはなぜですか?なぜそのような機能が提供されないのですか?そのようなサポートを提供することの落とし穴はありますか?