2012-04-21 11 views
0

、それはその後、合計インデックスは(db.Location.totalIndexSize()を使用することにより)23628640すなわちMongoDBのensureIndex

を非常に高く来ている332万に-140間の範囲だけを取っています

私のクエリは実行に時間がかかります。

(-180,180)の間でインデックスを作成するにはどうすればよいですか?助けてください

db.Location.ensureIndex({loc:"2d",type:1,clientId:1,background:true},{min:-140,max:3320000}) 
+0

部分インデックスの機能があるかどうか尋ねられますか(特定の範囲の値のみをインデックスする)ですか?私は思っていません。たとえBツリーが動作する方法があっても、それはもっと速くなりません(インデックスを小さくするだけです)ので、インデックスが大きいのでクエリが長くかかるとは思わない。 – Thilo

+0

私は部分的なインデックス作成を求めていませんが、なぜ私のインデックス作成範囲が非常に高くなっているのかを尋ねています。(-180,180) – swati

答えて

0

私はあなたの構文が間違っていると思います。あなたはおそらくしたい:

db.Location.ensureIndex({loc:"2d",type:1,clientId:1}, {background:true}) 

minとmaxオプションは、-180と180オプションで、デフォルトですあなたがその範囲の外にある任意のオブジェクトを持っていますか?取得したエラーとサンプルオブジェクトを確認すると便利です。

+0

私はあなたに私のコードを示したいと思います。 gmail idはありがとうございます – swati

+0

私は範囲{ie:-140、最大:3320000}を指定していません、[-180.180]エラーの間隔でポイントを取得しています...私を助けてください。 – swati

+0

あなたのデータは-180と180の間ですか?私はその範囲外の値を照会することをお勧めします。近い値があれば、-181/181の範囲を使用することをお勧めします。 – mstearn