MongoDB:复合,稀疏和唯一索引的另一个问题

时间:2015-07-11 10:08:00

标签: mongodb

我的文档包含slugIDparentID属性:

{
    slugID: <string>,  // optional
    parentID: <ObjectID>,
    ...
}

基本上,slugID可以在URL中使用,而parentID是父资源(URL中的父资源)。

但是,并非所有资源都有slugID,在这种情况下,文档中不存在此属性

顺便说一句,我想在同一个父级的子级中强制执行slug的唯一性(因此可以解析URL以查找唯一的资源/文档)。

当然,我想出了一个带有选项{ slugID: 1, parentID: 1}的复合索引{ sparse: true, unique: true }

但令人惊讶的是,稀疏索引在复合索引上的行为不应该如此:如果索引的 ANY 属性存在,它将被索引(期待:if < em> ANY 属性丢失,未编入索引。

就我而言,parentID始终是定义的,但slugID不是强制性的,因此每当两个文档没有{{1}时,我就会收到重复键错误对于同一个父母......

那么......解决方法是什么? (编辑:在这个问题中,如果slugID存在,我关注(slugID,parentID)元组唯一性)。

我只有应用程序端解决方案,但没有一个真正让我满意。

PS:我知道还有其他类似的问题(复合,稀疏和唯一索引),但解决方法并不适合我的用例。

PS2:违规查询:

slugID

0 个答案:

没有答案