【发布时间】:2015-03-25 15:03:55
【问题描述】:
我们正在使用具有 1 个主节点、1 个辅助节点和 1 个仲裁器的 MongoDB 副本集。
在我们的 java 应用程序中,我们使用 Spring-data-mongodb 与 MongoDB 进行交互。 我们应用程序中的一个关键用例涉及使用带有距离排序的 geoNear 查询的聚合管道,类似于这样(不包括此操作的查询部分 - 但它涉及检查非地理字段,例如位置的状态检查
[ { "$geoNear" : { "query" : { ..... } ,
"maxDistance" : 4.7035678286621944E-5 , "distanceMultiplier" : 6378.137 ,
"near" : [ 77.09979953386978 , 28.442629624873796] , "spherical" : true , "distanceField" : "distance"}} ,
{ "$project" : { "distance" : 1}}]
我们已经设置了读取操作的副本首选项。 但是,无论我们使用 NEAREST 还是 SECONDARY_PREFERRED 作为我们的读取偏好,geonear 查询始终定向到主节点,并且在副本集之间不平衡。
我们在这里遗漏了什么吗?根据 mongodb 操作,geoNear 查询包含在尊重指定读取首选项的操作中。
【问题讨论】:
标签: spring mongodb geospatial