2016-08-08 37 views
1

Ich führe den folgenden Code aus, um ein Filialdokument unter einem vorhandenen Filialdokument zu erstellen. Die grundlegende Struktur ist:Push eine Sammlung zu einem Filialdokument von Index?

Benutzer -> (viele Kommentare) -> (viele Bewertungen).

Das Bewertungsobjekt ist ein grundlegendes JavaScript-Objekt mit der Struktur;

rating: { 
    userId: "userId", 
    rating: 4 
} 

Also, für den Kommentar bei Index [0], ich versuche, eine neue Bewertung mit dem folgenden zu schieben;

db.getCollection('Users').update(
       {id: "user123", }, 
       { 
        $push: { 
         comments[0].ratings: rating 
        } 
       }) 

Die Rückkehr von der Mongo-Konsole (mit Bewertung auf ein Test-String gesetzt nur von "test"), ist;

Error: Line 5: Unexpected token [ 

Ich habe versucht, dies zu umgehen, indem Sie Kommas um die Kommentare [0] wickeln;

db.getCollection('Insights').update(
        {id: "b5e5bf69-071b-4af2-99b2-5165b47499cb", }, 
        { 
         $push: { 
          "comments[0].ratings": "test" 
         } 
        }) 

Dies ist tatsächlich mit Erfolg zurückkehrt;

Updated 1 existing record(s) in 2ms 

Allerdings ist das Subdokument haupt nicht angezeigt.

Könnte mir jemand in die richtige Richtung zeigen?

+1

ypou sollte Ihr Benutzersammelschema mit Kommentaren und Bewertungen veröffentlichen; wird für uns einfacher zu verstehen sein. – sergiuz

Antwort

0

Eine Antwort gefunden; Das Format Array [Index] funktioniert nicht mit Mongo. Verwenden Sie stattdessen Objektnotation. Also, statt

$push: {"comments[0].ratings": "test"} 

Verwendung;