2011-09-29 9 views
7

これは単一の要求で行うことが可能かどうか疑問に思っていますか?Mongodbはネストされた文書の空のオブジェクトと一致します

{ 
    _id: 1, 
    foo: { 
    barney: { bar: 1 } 
    } 
} 

期待

{ 
    _id: 1, 
    foo: { 
    fred: {},   // <- I want to remove empty keys like this 
    barney: { bar: 1 } // <- But keep these keys 
    } 
} 

を考えると

は、私はいくつかの要求でそれを行う方法を知っているが、私はより良いMongoDBのを理解しようとしています。


注意。fredは、更新コマンドで{ $unset: { "fred.baz": 1 } }のように空になりますbazが最後のキーの場合fredになります。

多分、内容物を取り除くことは可能でしょうか?しかし、コマンド送信者は知らない、bazを除いて他の鍵があるかどうかは分からない。あなたがそれらを空に埋め込まれたドキュメント({ })を検索し、$unsetでき

答えて

8

..ここJSシェルでの例です:

db.mycoll.update(
    {'foo.fred':{ }}, 
    { $unset: {'foo.fred':1} }, 
    false, // upsert: no 
    true // multi: find all matches 
) 
関連する問題