2011-12-27 13 views

Odpowiedz

112

Spróbuj:

db.collection.update(
    { '<field>': { '$exists': true } }, // Query 
    { '$unset': { '<field>': true } }, // Update 
    false,        // Upsert 
    true         // Multi-update 
) 

gdzie field to Nieaktualne pola i collection to zbiór został usunięty z.

Ogólne polecenie aktualizacji ma postać db.collection.update(criteria, objNew, upsert, multi). Argumenty kończące argumenty false i true powodują wyłączenie trybu upsert i włączenie aktualizacji wielokrotnej, dzięki czemu zapytanie aktualizuje wszystkie dokumenty w kolekcji (nie tylko pierwsze dopasowanie).

Aktualizacja dla MongoDB 2.2 lub nowszym

Teraz można dostarczyć obiekt JSON zamiast pozycyjnych argumentów upsert i multi.

db.collection.update(
    { '<field>': { '$exists': true } }, // Query 
    { '$unset': { '<field>': true } }, // Update 
    { 'multi': true }     // Options 
) 
+3

Wartość określona dla wartości pola w instrukcji $ unset (tj. 1 tutaj) nie ma wpływu na operację. [$ unset operator] (http://docs.mongodb.org/manual/reference/operator/unset/#_S_unset) – Xiao

29

prostu zrobić coś takiego

db.people.find().forEach(function(x) { 
    delete x.badField; 
    db.people.save(x); 
}) 

oooh ktoś $unset odpowiedź dał za pomocą update()here jest dość niesamowite zbyt.

+0

THX Jamund. Twoje podejście też działa. –

+0

Nie można zaakceptować 2 odpowiedzi. Więc tylko go przegłosowali. –

+0

Dzięki, to bardzo miłe! –