2016-04-03 7 views
0

Ich habe Koordinaten in einem Geolocation-Array:

Crowds.insert({ 
    location: {"type": "MultiPoint","coordinates": 
     [[1, 1]] 
    } 
}); 
Crowds._ensureIndex({ location: "2dsphere" }); 

Dann versuche ich, Mehrwert zu schaffen. Um dies zu tun mache ich einen §push neuen Wert hinzuzufügen, in „Koordinaten“ Array:

Crowds.update(
    { _id: crowd[0]._id }, 
    { $push: { location: { "coordinates": [ 2, 2 ] 
    }}}  
); 

ich den Folling Fehler:

Exception in Mongo write: TypeError: object is not a function 

Es scheint, dass ich nicht Koordinaten Array die richtige Art und Weise zu aktualisieren ... ich habe versucht, verschiedene Kombinationen aber nicht finden kann, wie Wert in einem verschachtelten Array hinzufügen ...

Bitte helfen;) Danke

Antwort

0

gibt es da einen Tippfehler?

"Crowd" ist dort singular, aber Sie rufen [0] als wäre es ein Array.

Sollte es sein:

crowds[0]._id 
+0

crowd [0] ._ ID ist eine einfache Variable, ich glaube nicht, dass es Fehler verursacht, weil ohne $ drücken Es gibt keinen Fehler. – Krem

+0

@Krem, bitte geben Schema Beispiel wird es nützlich für mich sein. –

0

Ich glaube, ich fand das Problem, und tatsächlich habe ich die Frage nicht fragen ... sorry

Der folgende Code Fehler zurückgegeben:

Crowds.update(
    { _id: '123' }, 
    { $inc: { people: 1 } }, 
    { $push: { "location.coordinates": [ Meteor.user().profile.location.coords.longitude, Meteor.user().profile.location.coords.latitude ], 
    { $set: { modified: new Date().valueOf() } }, 
      function(error){ 
      return "Update error: " + error; 
     }      
); 

Aber es funktioniert mit:

Crowds.update(
    { _id: '123' }, 
    { $inc: { people: 1 } }, 
    { $set: { modified: new Date().valueOf() } }, 
    function(error){ 
     return "Update error: " + error; 
    }     
); 

Crowds.update(
    { _id: crowd[0]._id }, 
    { $push: { "location.coordinates": [ Meteor.user().profile.location.coords.longitude, Meteor.user().profile.location.coords.latitude ] 
    }}, 
    function(error){ 
     return "Update error: " + error; 
    }     
); 

Es scheint, dass $ Push verwendet werden muss, sagen Sie mir, wenn ich falsch in der Diagnose bin;)