0
Event Schema:
    Name:String,
    Description: String,
    Location:[
          ll:[long,lat]
          type: String (source,destination)
    ],
    CreatedDate:Date,
    UpdatedDate:Date,

ドキュメントの例:

 {
   Name : 'Test1',
   Description : 'Test1',
   Location:[{
         ll:[{long:-118.2436849,lat:34.0522342}],
         type: 'source'
   },{
         ll:[{long:2,lat:4}],
         type: 'destination'
   }] 
}

上記と同じ構造のドキュメントが 7 つあります。

クエリを作成すると:

 db.events.count({'location.ll' : {$near:[-118.2436849,34.0522342]},'location.type':'source'});

私は14カウントを返します。理想的には 7 レコードを取得する必要がありますが、14 レコードを取得しています。何が間違っているのかわかりません。

フィールド「location.ll」を「2d」としてすでに索引付けしました

私が間違っていることを教えてください。

お手伝いありがとう

4

1 に答える 1

2

これは文書化された「機能」であり、提案に従うことで回避できます。

複数の座標値を持つドキュメントの場合、複数のインデックス付き座標ペアがクエリの制約を満たす場合、クエリは同じドキュメントを複数回返すことがあります。uniqueDocs パラメーターを geoNear に使用するか、$uniqueDocs オペレーターを $geoWithin に使用します。

于 2013-08-26T11:09:58.843 に答える