2016-06-25 10 views
0

Ich habe in den letzten paar Stunden damit zu kämpfen und kann es nicht richtig funktionieren. Lies alles über Stackoverflow, Google und kann es immer noch nicht korrekt in meinem Fall implementieren.Ein Element in ein Array in MongoDB schieben

Grundsätzlich mein Dokument in MongoDB sieht wie folgt aus:

{ 
"_id": "H2RLYBniXZ7Fkszpu", 
    "userId": "FmMsoqXxJ8Nd4DRm5", 
    "Data": { 
    "name": "This is just a test.", 
    "summary": "sdadsdas", 
    "testId": "EyWcg1vS-", 
    "questions": [ 
     { 
     "type": "test", 
     "key": "E1eol1DS-", 
     "options": [] 
     } 
    ], 

} 
} 

Mein Ziel $push ist und Element in die "Data.questions.options" Array wenn, die bestimmte Objekt key in diesem Array mit dem Eingang gleich I fordern.

ich so viele verschiedene Wege versucht zu tun, einschließlich der $in Operator, Dinge wie dies zu tun:

Db.fix.update({_id: "H2RLYBniXZ7Fkszpu"}, {$push: {"Data.questions.$.options": "option"}}); // Pushing the string "option" into the options array 

ich auch für MongoDB in den $cond Operator war auf der Suche, um zu sehen, ob ich conditionals hinzufügen können, aber es ist nur zur Aggregation. Ich bin mir nicht sicher, wie ich damit weitermachen soll. Ich bin nicht sicher, ob es überhaupt möglich ist, dies mit einem solchen verschachtelten Array zu tun.

Antwort

1

Sie waren sehr nah dran. Der Schlüsselteil mit der $ positional operator ist, dass das Array-Feld als Teil des Abfragedokuments angezeigt werden muss.

Versuchen Sie folgendes:

db.Fix.update({_id: "H2RLYBniXZ7Fkszpu", "Data.questions.key":"E1eol1DS-"}, {$push: {"Data.questions.$.options": "option"}}); 
Verwandte Themen