2011-09-29 6 views
7

मैं सोच रहा हूं कि एक अनुरोध में ऐसा करना संभव है या नहीं?मोंगोड ने नेस्टेड दस्तावेज़ में खाली ऑब्जेक्ट मैच

देखते हुए

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

उम्मीद

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

मैं कैसे कई अनुरोध में यह करने के लिए पता है, लेकिन मैं बेहतर MongoDB समझने की कोशिश कर रहा हूँ।


नोट।fred अद्यतन कमांड में { $unset: { "fred.baz": 1 } } जैसे खाली हो जाता है जब bazfred में अंतिम कुंजी है।

शायद इसकी सामग्री के साथ इसे निकालना संभव है? लेकिन कमांड प्रेषक को पता नहीं है, इस समय baz को छोड़कर, कोई अन्य कुंजी है।

उत्तर

8

आप खाली एम्बेडेड डॉक्स ({ }) और $unset उन्हें खोज सकते हैं .. यहाँ जे एस खोल में एक उदाहरण है:

db.mycoll.update(
    {'foo.fred':{ }}, 
    { $unset: {'foo.fred':1} }, 
    false, // upsert: no 
    true // multi: find all matches 
) 
संबंधित मुद्दे