我需要一種解決方法,因爲MongoDB不支持稀疏唯一複合索引(它將設置值爲null
,如果不存在,而不會將該字段添加到索引時它是非複合指數)。見https://jira.mongodb.org/browse/SERVER-2193MongoDB解決方法不支持稀疏唯一複合索引
在我的特殊情況下,我有events
。他們可以是一次性的或經常性的。我有一個字段parent
,該字段僅在事件是重複事件的實例(我定期創建父系的新副本以在系統的未來幾周內發生重複事件)時才存在。
我以爲當的cronjob上面說的MongoDB作爲複合索引不支持sparse
不幸的是運行兩次
events.ensureIndex({ dateFrom: 1, dateTo: 1, parent: 1 }) { sparse: true, unique: true }
我只是爲了避免重複副本添加此指數。這意味着對於一次性事件,parent
字段不存在,並且由MongoDB設置爲null
。如果我現在同時有第二個一次性事件,它會導致一個重複的鍵錯誤,我只在設置父項時需要這個錯誤。
任何想法?
編輯:我見過MongoDB: Unique and sparse compound indexes with sparse values,但在應用程序級別檢查唯一性是一個不行。我的意思是這就是數據庫在那裏,保證的唯一性。
可能的重複https://stackoverflow.com/questions/45675385/mongodb-compound-sparse-indexes – JohnnyHK