私は私のシャードクラスタ上$geoNearクエリを実行している(3レプリカと6つのノードが2 shardsvrと1つのアービタのそれぞれを設定します)。 私はクエリが1.1m文書を返すと期待しています。私は〜130.xxxの書類しか受け取りません。私は、Javaドライバを使用してクエリを発行し、データを処理しています(今のところ、返されるドキュメントを数えています)。私はMongoDB 3.2.9と最新のJavaドライバを使用しています。
2016-10-10T12:00:22.933+0200 W COMMAND [conn22] Too many geoNear results for query { location: { $nearSphere: { type: "Point", coordinates: [ 10.xxxx, 52.xxxxx] }, $maxDistance: 3900.0 } }, truncating output.
2016-10-10T12:00:22.951+0200 I COMMAND [conn22] command mydb.data command: geoNear { geoNear: "data", near: { type: "Point", coordinates: [ 10.xxxx, 52.xxxxx ] },
num: 50000000, maxDistance: 3900.0, query: {}, spherical: true, distanceMultiplier: 1.0, includeLocs: true } keyUpdates:0 writeConflicts:0 numYields:890 reslen:16777310
locks:{ Global: { acquireCount: { r: 1784 } }, Database: { acquireCount: { r: 892 } }, Collection: { acquireCount: { r: 892 } } } protocol:op_query 589ms
2016-10-10T12:00:23.183+0200 I COMMAND [conn22] getmore mydb.data query: { aggregate: "data", pipeline: [ { $geoNear: { near: { type: "Point", coordinates: [ 10.xxxx, 52.xxxxx ] },
distanceField: "dist.calculated", limit: 50000000, maxDistance: 3900.0, query: {}, spherical: true, distanceMultiplier: 1.0, includeLocs: "dist.location" } }, { $project: { _id: false,
dist: { calculated: true } } } ], fromRouter: true, cursor: { batchSize: 0 } } cursorid:170255616227 ntoreturn:0 cursorExhausted:1 keyUpdates:0 writeConflicts:0 numYields:0 nreturned:43558
reslen:1568108 locks:{ Global: { acquireCount: { r: 1786 } }, Database: { acquireCount: { r: 893 } }, Collection: { acquireCount: { r: 893 } } } 820ms
クエリ::私はとせずにクエリを発行した
db.data.aggregate([
{
$geoNear:{
near:{
type:"Point",
coordinates:[
10.xxxx,
52.xxxxx
]
},
distanceField:"dist.calculated",
maxDistance:3900,
num:50000000,
includeLocs:"dist.location",
spherical:true
}
}
])
注
のmongodログは、16メガバイトよりも大きくなった出力文書によって引き起こされる、次のエラーを示していパラメータnum
は、上記のエラーで両方とも失敗します。
ドキュメントサイズ制限(16 MB)を超えた場合、クエリでデータベースのチャンクが返されると予想されました。 私は何が欠けていますか?すべてのデータを取得するにはどうすればよいですか?
編集: 私はグループステージを追加するときに、クエリものmongodログに同じエラーで失敗します。
db.data.aggregate([
{
$geoNear:{
near:{
type:"Point",
coordinates:[
10.xxxx,
52.xxxxxx
]
},
distanceField:"dist.calculated",
maxDistance:3900,
includeLocs:"dist.location",
num:2000000,
spherical:true
}
},
{
$group:{
_id:"$root_document"
}
}
])
Lungang牙でのMongoDBユーザーグループの私の問い合わせに応答した