【发布时间】:2017-01-31 08:44:15
【问题描述】:
我很难找到一种方法来使集合索引按我需要的方式工作。该集合有一个包含两个元素的数组,没有其他数组可以包含这两个元素(以任何顺序):
db.collection.insert(users : [1,2] // should be valid
db.collection.insert(users : [2,3] // should be valid
db.collection.insert(users : [1,3] // should be valid
db.collection.insert(users : [3,2] // should be invalid, since there's another array with that same value.
但是,如果我使用db.collection.createIndex({users:1}, {unique: true}),它将不允许我拥有两个具有共同元素的数组:
db.collection.insert(users : [1,2] // valid
db.collection.insert(users : [2,3] // invalid, since 2 is already on another document
我尝试的解决方案之一是使数组更深一层。创建完全相同的索引,但添加文档略有不同,这几乎是我需要的方式,但它仍然允许两个数组以相反的顺序具有相同的值:
db.chat.insert({ users : { people : [1,2] }}) // valid
db.chat.insert({ users : { people : [2,3] }}) // valid
db.chat.insert({ users : { people : [2,1] }}) // valid, but it should be invalid, since there's another document with [1,2] array value.
db.chat.insert({ users : { people : [1,2] }}) // invalid
有没有办法在索引级别上实现这一点?
【问题讨论】: