mongo文档指出:“当文档被保存到具有唯一索引的集合中时,任何缺少索引的键将被插入空值,因此,不可能插入多个缺少相同索引键的文档。如何避免在使用mongo db的唯一索引中丢失值?
因此,不可能在可选字段上创建唯一索引?我应该用一个userId创建一个复合索引来解决这个问题吗?在我的具体情况中,我有一个拥有可选嵌入式oauth对象的用户集合。 例如
>db.users.ensureIndex({ "name":1, "oauthConnections.provider" : 1, "oauthConnections.providerId" : 1 });
我的示例用户
{ name: "Bob"
,pwd: "myPwd"
,oauthConnections [
{
"provider":"Facebook",
"providerId" : "12345",
"key":"blah"
}
,{
"provider":"Twitter",
"providerId" : "67890",
"key":"foo"
}
]
}
不错,甚至有文件记录:“您可以将稀疏与独特相结合,以产生一个独特的约束,忽略缺少字段的文档。” – MrKurt
另一个问题,如果你不能有稀疏的复合索引,你可以有一个嵌入式对象或嵌套字段的稀疏索引?在上面的例子中,我们希望在嵌入的oauthConnections集合上有一个索引。 – MonkeyBonkey