2014-09-01 20 views
1

如果我們使用複合分片密鑰,則{a,b}有可能在任何查詢中拋出錯誤,這些查詢在java驅動程序級別的查詢中不包含這些字段。即查詢執行前的任何回調/生命週期事件...就像AbstractMongoEventListener - 在這裏我們有onAfterLoad和onAfterConvert的選項,但我們的要求是在執行查詢之前...在java驅動程序級別的東西MongoDB分片密鑰 - 在每個查詢中強制執行

回答

0

我明白你爲什麼想要這個功能(如果查詢不包括作爲其條件一部分的單個分片密鑰,那麼它將導致「分散和收集」類型的查詢,這導致顯着的性能下降)。但是API的最佳實踐表明,API應該設計用於單一目的,並且是通用的,如果我們傾向於將此功能添加到Java驅動程序,那麼它將趨向於施加可能不需要的額外約束。因此,沒有開箱即用的API,爲您做到這一點。

What you can do to make it work - Write a wrapper on top of this API with the additional capability. 
+0

感謝@vmr快速響應。正是我們需要執行的原因:)將研究包裝的可能性並得到返回 – 2014-09-01 12:48:10

+1

對於尋找類似的東西的人是我做的 - 1)創建一個擴展MongoTemplate的自定義MongoTemplate類 2)覆蓋'find(Query查詢,類 entityClass,String collectionName)'和'findOne(Query query,Class entityClass,String collectionName)',並做任何驗證/操作 3)在配置擴展AbstractMongoConfiguration覆蓋'mongotemplate'方法並返回您創建的自定義Mongotemplate – 2014-09-02 08:25:23

相關問題