我在mongodb的数据库中有一个“users”集合。我将使用分片。
除标准_id外,还有3个其他字段需要编制索引且唯一:用户名,电子邮件和帐号。所有这三个字段不一定存在于每个用户文档中,在某些情况下不会存在。
我希望将字段编入索引,因为其中一个字段会经常查找用户。我希望这些字段是唯一的,因为这是一个要求,我宁愿不处理这个逻辑客户端。
我知道mongodb确实有其他数据库的限制,但我希望有一个解决方案,因为这是一个相当常见的Web应用程序设置。
这种情况有优雅的解决方案吗?
不确定这个问题是否重要(因为问题与数据库结构有关),但我使用的是官方的mongodb C#驱动程序。
答案 0 :(得分:3)
Mongodb官方文档称,分片集合必须只有一个唯一索引,并且需要存在唯一字段。但它也says 你还可以选择在其中使用其他唯一索引,当且仅当分片键是其属性的前缀时。所以你可以试试这个,但是知道,那个必须始终存在唯一键。
我不了解您的业务逻辑,其中不存在有关用户的信息。在这种情况下,您可以按_id
进行分片并手动执行唯一性检查。