13

Meteorアーキテクチャでmongodb地理空間インデックスを使用できるかどうか疑問に思っています。

Minimongoは地理空間インデックスを実装していませんが、これはサーバー側でこのmongo機能を使用できないことを意味しますか?

たとえば、todosアプリでは、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 );
4

2 に答える 2

18

はい、Meteor 内でMongoDB 地理空間インデックスを使用できます。また、Meteor アプリ内からそのインデックスを作成することもできます。

- 地理空間検索

$within上記の演算子とは対照的に、以下の演算子を使用してい$nearますが、これは引き続き適用されます。

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

注意: これらの種類のジオ クエリは、サーバー上でのみ使用できます(現在)。

- (MongoDB シェルではなく) Meteor 内から地理空間インデックスを作成する

Places._ensureIndex({ loc : "2d" });

たとえば、上記を で使用できますbootstrap.js

ensureIndexまた、おそらくin Meteor.startup、または初期データを挿入するときに、を入れたいと思うでしょう。


警告:ここで述べたように、上記の呼び出し方法はensureIndex、公式の呼び出し方法が不足しているための回避策であるため、これが変更される可能性があることを期待してください。

更新: Meteor 0.5.0 の変更が反映されるようになりました。以下の@Drorのコメントを参照してください。

于 2012-08-24T11:05:24.103 に答える
1

はい、できると思います。

サーバー側では、Meteor は find/update/.. を node-mongo-native 呼び出しに委譲します。packages/mongo-livedata/mongo_driver.js のコードを確認できます。そして、私が知っているように、node-mongo-native は地理空間インデックスをサポートしています。

于 2012-07-10T03:04:32.437 に答える