2

MongoDb シェルで

db.keyword.update({"state":"UT"}, {$unset:{'abc.def':1}}); 

unsets は abc から def を削除します。ただし、次のようにすると:

var key = 'def'

var key1 = 'abc.'+key 
db.keyword.update({"state":"UT"}, {$unset:{key1:1}}); 

def を設定解除しません。

key1 を渡して「abc.def」の設定を解除するにはどうすればよいですか?

4

1 に答える 1

5

はい、これがjsonパーサーの仕組みです。標準では、ハッシュ キーは引用符で囲む必要がありますが、一部のパーサーは寛大すぎて省略できます。したがって、これが mongo がコードを認識する方法です。

db.keyword.update({"state": "UT"}, {"$unset": {"key1": 1}}); 

この問題は、ハッシュを手動で作成することで回避できます。このようなもの:

var key = 'def';
var key1 = 'abc.' + key;

var mod = {"$unset": {}};
mod["$unset"][key1] = 1;

db.keyword.update({"state": "UT"}, mod);
于 2012-11-14T05:44:31.990 に答える