簡體   English   中英

Spring Data-MongoDB geoNear沒有在副本集中分發

[英]Spring Data- MongoDB geoNear not getting distributed in replicaset

我們正在使用具有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-data-mongodb不會將mongoTemplate上指定的讀取首選項傳遞給基礎com.mongodb.Mongo連接池-用於聚合。 它將通過讀取首選項進行簡單的查找操作。

我們必須修改我們的spring配置-不使用spring數據的mongo:mongo,該mongo:mongo不提供指定讀取首選項的功能-而是編寫我們自己的Factory bean來創建可以在com.mongodb.Mongo上設置讀取首選項的工廠bean。 這樣,我們就可以將geonear聚合查詢也定向到我們指定的任何讀取首選項。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM