2017-11-06 17 views
0
aktualisieren

Ich benutze jetzt Mungoos zu ziehen und ziehen Filialdokumente in das Array, und jetzt möchte ich den Inhalt des Detailfeldes dieses Filialdokument mit der _id des Filialdokuments ändern.Ich möchte Subdokument im Array

{ 
    subDocument: [{ 
     _id: ObjectId('123'), 
     detail: 'I want update this part'   
    }] 
} 

Ich habe versucht, die $ set-Methode wie unten gezeigt zu verwenden, aber es hat nicht wie erwartet funktioniert.

Wenn Sie die for-Anweisung wie unten gezeigt betrachten, hat dies wahrscheinlich einen schlechten Effekt auf die Leistung. Also möchte ich diese Methode vermeiden.

const data = findById(uid); 

for(...) { 
    if(data.subDocument[i]._id==_id) { 
     data.subDocument[i].detail = detail 
    } 
} 

Können Sie mir einige Mongodb-Abfragen mitteilen, die ich implementieren kann?

Und, Ist es nicht besser, die 'for (;;;)' Anweisung zu verwenden, als die Suche mit mongodbs Abfrage?

+0

post die Struktur des Schemas .... – wrangler

Antwort

1

Dies sollte funktionieren:

Model.findOneAndUpdate({"subdocument._id": uid}, 
     { 
      $set: { 
       "subdocument.$.detail ": "detail here" 
      } 
     }, 
     ).exec(function(err, doc) { 
       //code 
     }); 
1

Subdokument von id zu finden, ich bin mit so etwas wie:

var subDocument = data.subDocument.id(subDocumentId); 
if (subDocument) { 
    // Do some stuff 
} 
else { 
    // No subDocument found 
} 

Hoffe, es hilft.

Verwandte Themen