我想知道是否有可能使用与流星架构的MongoDB的地理空间索引。
Minimongo没有实现地理空间索引,但是这是否意味着我们不能使用此功能蒙哥在服务器端?
例如,与待办事项应用程序,如果我们在TODO上使用的位置,才有可能做到:
// Publish complete set of lists to all clients.
Meteor.publish('todos', function (lon,lat) {
return Todos.find({loc: {$near:[lon,lat]}}).limit(2);
});
而在客户端:
Meteor.subscribe('todos', lon, lat );
是的,你可以在流星使用MongoDB的地理空间索引,你可以从你的流星应用程序中也创建索引。
-地理空间搜索
我使用的是$within
操作的下方,而不是在$near
操作上面提到的,但是这仍然适用:
Meteor.publish('places', function(box) {
return Places.find({ loc : { $within : { $box : box }}});
});
提醒 :这些类型的地理查询的只是服务器 (目前)上可用。
- (在MongoDB的外壳,而不是) 创建地理空间指数从内流星
Places._ensureIndex({ loc : "2d" });
例如,你可以使用上面在bootstrap.js
。
此外,你可能会想要把你ensureIndex
在Meteor.startup
,或者当你插入一些初始数据。
警告 :如前所述这里 ,调用上面的方法ensureIndex
是周围的正式方式来调用它想要的工作,所以请期待,这可能会改变。
更新 :现在反映流星0.5.0更改,请参阅@Dror下面的评论。
是的,我觉得还可以。
在服务器端,流星代表发现/更新/ ..到节点蒙戈本地通话。 你可以看看在包/蒙戈 - livedata / mongo_driver.js的代码。 而据我所知,节点蒙戈原生支持地理空间索引。