2016-06-02 11 views
0

Ich muss einen Wert von einem Array in ein anderes Array ziehen, aber es funktioniert nicht. Ich habe ein Dokument Firma:Wie wird ein Element in einem Array in ein anderes Array in MongoDB gezogen?

{ 
    _id: String, 
    companyName: String, 
    address: String, 
    employees: [Employee], 
    ... 
} 

Mitarbeiter:

{ 
    idRegister: String, 
    employeeName: String, 
    markers: [Marker], 
    ... 
} 

Marker:

{ 
    tag: String 
    ... 
} 

Also habe ich versucht, die Abfrage:

db.company.update(
{ 
    $and: 
    [ 
      { 
       _id: "8qmypja88nbuoedsi" 
      }, 

      { 
      'employee.idRegister': "567.567" 

      } 
     ] 
    }, 

    { 
     $pull: 
      { 
      'employees.markers.tag': 
       { 
       $elemMach: 
       { 
        "ghj-5675" 
       } 
       } 
      } 
    }}); 

Aber ich habe den Fehler:

"writeError" : { 
    "code" : 2, 
    "errmsg" : "unknown top level operator: $elemMatch" 
} 

Wer weiß, wie kann ich einen bestimmten Tag ziehen? Ich habe andere Abfragen ohne $ elemMatch versucht, bevor ich hier schreibe, aber auch keinen Erfolg.

Antwort

0

von mongo doc

{ $pull: { fruits: { $in: [ "apples", "oranges" ] }, vegetables: "carrots" } }, 

so in Ihrem Fall

$pull:{ 'employees.markers':{"tag":"ghj-5675"}} 
+0

'db.company.update ({$ elemMatch: {$ eq: {'employees.idRegister': "567.567"}}}, {$ pull: {'employees.markers': {"tag": "ghj-5675"}}}) '' Mit diesem Befehl I habe diese Fehler: 'WriteResult ({ " nMatched ": 0, " nUpser ted“: 0, "nModified": 0, "Writeerror": { "code": 2, "errmsg": "unbekannt Top-Level-Operator: $ elemMatch" } }') –

+0

ElemMatch wird verwendet in Projektion nicht aktualisiert ..... – profesor79

0

ERHIELT ES!

sollte ich das Array-Element angeben, die das Update gemacht werden würde, also tat ich:

db.company.update({"_id" : "8qmypja88nbuoedsi", 'employees.idRegister': "567.567"}, 
    { 
    $pull: 
     { 
      'employees.$.markers': 
      { 
      $in: 
       [ 
        {tag: "ghj-5675"} 
       ] 
      } 
     } 
    }); 

Danke für die Hilfe @ profesor79

Verwandte Themen