2016-04-03 2 views
0

я установил координаты в геолокации массиве:

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

Затем я пытаюсь добавить значение. Для этого я сделать §push, чтобы добавить новое значение в «координату» массив:

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

Я получаю ошибку феллинга:

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

кажется, что я не обновляя координаты массива правильного пути ... Я пробовал различные комбинации, но не могу найти, как добавить значение в вложенном массиве ...

Пожалуйста, помогите;) Спасибо

ответ

0

есть опечатка там?

crowd[0]._id 

«Толпа» здесь единственная, но вы вызываете [0], как будто это массив.

Должна ли она быть:

crowds[0]._id 
+0

толпа [0] ._ id - простая переменная, я не думаю, что она вызывает ошибку, потому что без $ push ошибки нет. – Krem

+0

@Krem, пожалуйста, дайте пример схемы, это будет полезно для меня. –

0

Я думаю, что я нашел эту проблему, и на самом деле я не задаю вопрос ну ... извините

Следующий код возвратил ошибку:

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; 
     }      
); 

Но он работает с:

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; 
    }     
); 

Кажется, что $ push нужно использовать в одиночку, скажите мне, если я ошибаюсь в диагностике;)

Смежные вопросы