No shell do MongoDb
db.keyword.update({"state":"UT"}, {$unset:{"abc.def":1}});
unsets remove def do abc. No entanto, se eu fizer assim:
var key = "def"
var key1 = "abc."+key
db.keyword.update({"state":"UT"}, {$unset:{key1:1}});
não desaneca def.
Como faço para desanexar "abc.def" passando key1?
Respostas:
4 para resposta № 1Sim, é assim que o json parser funciona. Pelo padrão, as chaves hash devem ser colocadas entre aspas, mas alguns analisadores são muito tolerantes e permitem que você as omita. Então, é assim que o mongo vê seu código.
db.keyword.update({"state": "UT"}, {"$unset": {"key1": 1}});
Você pode contornar este problema construindo o hash manualmente. Algo assim:
var key = "def";
var key1 = "abc." + key;
var mod = {"$unset": {}};
mod["$unset"][key1] = 1;
db.keyword.update({"state": "UT"}, mod);