2011-09-29 15 views
7

Mi chiedo se è possibile farlo in una singola richiesta?Mongodb corrisponde a un oggetto vuoto nel documento annidato

Dato

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

Expected

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

io so come farlo in diverse richieste, ma sto cercando di capire meglio MongoDB.


Nota.fred diventa vuoto nel comando di aggiornamento come { $unset: { "fred.baz": 1 } } quando baz è l'ultima chiave in fred.

Forse è possibile rimuoverlo con il suo contenuto? Ma il mittente del comando non lo sa, ci sono altre chiavi, eccetto baz al momento.

risposta

8

È possibile cercare i documenti vuoti embedded ({ }) e li $unset .. Ecco un esempio nella shell JS:

db.mycoll.update(
    {'foo.fred':{ }}, 
    { $unset: {'foo.fred':1} }, 
    false, // upsert: no 
    true // multi: find all matches 
) 
Problemi correlati