Mongo地理空间索引和流星

jea*_*gui 13 mongodb meteor minimongo

我想知道是否可以使用meteorodb地理空间索引与Meteor架构.

Minimongo没有实现地理空间索引,但这是否意味着我们不能在服务器端使用这个mongo功能?

例如,使用todos应用程序,如果我们在待办事项上使用位置,是否可以执行以下操作:

// Publish complete set of lists to all clients.
Meteor.publish('todos', function (lon,lat) {
   return Todos.find({loc: {$near:[lon,lat]}}).limit(2);
});
Run Code Online (Sandbox Code Playgroud)

在客户端:

Meteor.subscribe('todos', lon, lat );
Run Code Online (Sandbox Code Playgroud)

a d*_*ren 18

是的,你可以在流星使用MongoDB的地理空间索引,并且您可以从您的流星应用程序中也创建索引.

- 地理空间搜索

我正在使用$within下面的运算符,而不是$near上面提到的运算符,但这仍然适用:

Meteor.publish('places', function(box) {
    return Places.find({ loc : { $within : { $box : box }}});
});
Run Code Online (Sandbox Code Playgroud)

提醒:这些地理查询仅在服务器上可用(当前).

- 从Meteor中创建地理空间索引(而不是在MongoDB shell中)

Places._ensureIndex({ loc : "2d" });
Run Code Online (Sandbox Code Playgroud)

例如,你可以使用上面的bootstrap.js.

此外,你可能会想要把你ensureIndexMeteor.startup,或者当你插入一些初始数据.


警告:正如这里提到的,上面的调用方法ensureIndex是因为缺少正式的方法来调用它,所以请期待这可能会改变.

更新:现在反映Meteor 0.5.0的变化,请参阅下面的@Dror评论.