2016-11-03 3 views
0

Hallo Jungs so Meteor Mongo db ich tue, ich benutze findAndModify PaketMongoDB Push-Daten auf bestimmten Array-Element

Ips.findAndModify({ 

     //Find the desired document based on specified criteria 
     query: { 
     "ipAdr": clientIp, 
     connections: { 
      $elemMatch: { 
      connID: clientConnId 
      } 
     } 
     }, 

     //Update only the elements of the array where the specified criteria matches 
     update: { 
     $push: { 
      'connections': { 
      vid: result.data.vid, 
      firstName: result.data.properties.firstname.value, 
      lastName: result.data.properties.lastname.value 
     } 
     } 
    }); //Ips.findAndModify 

So finde ich das Element, das ich brauche, aber meine Informationen an die ganzen Verbindungen geschoben werden Array, aber ich möchte meine Informationen in dieses spezifische Element schieben. Was soll ich hier machen? Ich versuchte

$push: { 
       'connections.$': { 
       vid: result.data.vid, 

aber es gibt Fehler. Bitte helfen.

+0

Welchen Fehler bekommen Sie ?? –

Antwort

1

Sie brauchen nicht die $ schieben hier Operator zu verwenden, da es ein neues Element Array fügt stattdessen müssen Sie ein Element ändern, die bereits in dem Array ist, versuchen die $ gesetzt Operator zu aktualisieren folgt als:

update: { 
     $set: { 
      'connections.$.vid': result.data.vid, 
      'connections.$.firstName': result.data.properties.firstname.value, 
      'connections.$.lastName': result.data.properties.lastname.value 
     } 
     } 

berücksichtigen, dass auf diese Weise nur ein Element des Arrays ändern wird, die die Bedingung von der $ elemMatch Aussage erfüllt.

Verwandte Themen