Meteor $推多点阵列

时间:2016-04-03 21:09:49

标签: arrays mongodb meteor push

我在地理位置数组中设置坐标:

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

然后我尝试增加价值。为此,我做了一个§push在“coordinates”数组中添加新值:

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

我收到了错误的错误:

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

似乎我没有以正确的方式更新坐标数组...我尝试了各种组合,但无法找到如何在嵌套数组中添加值...

请帮助;)谢谢

2 个答案:

答案 0 :(得分:0)

那里有错字吗?

crowd[0]._id

"人群"在那里是奇异的,但你正在调用[0],好像它是一个数组。

应该是:

crowds[0]._id

答案 1 :(得分: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需要单独使用,告诉我诊断是否错误;)