我需要一种解决方法,因为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