2010-10-07 12 views
26

Dodałem atrybut MiddleName do mojego obiektu Customer. Klient to prosta instancja Object(). Chcę usunąć ten atrybut z mojego obiektu. Jak mogę to zrobić? Korzystam z interaktywnej konsoli MongoDb.Jak usunąć atrybut z obiektu MongoDb?

+4

Znaleziono odpowiedź => usuń klienta.MiddleName – johndoe

Odpowiedz

55

Należy użyć $ unset modyfikator podczas aktualizacji:

// db.collection.update (kryteria, objNew, upsert, Multi) -> dla odniesienia

Aby usunąć:

db.collection.update( 
    { 
     "properties.service" : { 
      $exists : true 
     } 
    }, 
    { 
     $unset : { 
      "properties.service" : 1 
     } 
    }, 
    false, 
    true 
); 

Aby sprawdzić, zostały one usunięte można użyć:

db.collection.find( 
    { 
     "properties.service" : { 
      $exists : true 
     } 
    } 
).count(true); 

Pamiętaj, aby użyć opcji multi jako wartości true, jeśli chcesz aktualizować wiele rekordów. W moim przypadku chciałem usunąć atrybut properties.service ze wszystkich rekordów w tej kolekcji.

+2

Uruchomiłem to polecenie na db z 20 milionów rekordów. Minęło już 14 minut. Usuwanie jednego pola. –

+3

Tak, nie jestem zaskoczony. Czy możesz zaproponować lepszy sposób na bazę danych zaprojektowaną tak, aby była wolna od schematów? –

+1

Podpis argumentu db.collection.update został zmieniony w 2.2: http://docs.mongodb.org/manual/reference/method/db.collection.update/ – spazm

Powiązane problemy