2012-02-22 15 views
24

Jak ustawić kierowanie na subdokument w tablicy authors, jak pokazano poniżej, aby go zaktualizować?Aktualizacja sub-dokumentu w mongodb?

collection.update({'_id': "4f44af6a024342300e000001"}, {$set: { 'authors.?' }}) 

Dokument:

{ 
    _id:  "4f44af6a024342300e000001", 
    title: "A book", 
    created: "2012-02-22T14:12:51.305Z" 
    authors: [{"_id":"4f44af6a024342300e000002"}] 
} 

Odpowiedz

37

Określając pozycję rzeczywistą dokumentu osadzone tak:

// update _id field of first author  
collection.update({'_id': "4f44af6a024342300e000001"}, 
        {$set: { 'authors.0._id': "1" }}) 

Albo poprzez positional operator:

// update _id field of first matched by _id author  
collection.update({'_id': "4f44af6a024342300e000001", 
        //you should specify query for embedded document 
        'authors._id' : "4f44af6a024342300e000002" }, 
    // you can update only one nested document matched by query     
        {$set: { 'authors.$._id': "1" }}) 
+2

istnieje sposób, aby zaktualizować wszystkie zagnieżdżony dokument dokumentu? – BlaShadow

+0

Po prostu, jeśli chcesz zaktualizować więcej niż pierwszy zgodny dokument w kolekcji, pamiętaj, aby dodać {multi: true} jako trzeci parametr do collection.update – dev

+0

spowoduje wstawienie nowego pod-dokumentu, jeśli nie zakończy się ? – Pila

Powiązane problemy