1

我正在尝试在users集合上创建多个唯一索引,这些索引也很稀疏。

用例:允许用户使用电话或电子邮件注册

问题:Mongo db 允许创建此类索引,并且当连接到真正的 mongo 3.2 实例时,应用程序会按预期运行。然而,在 cosmos 中,电子邮件成为一个独特的领域,但并不稀疏。

有没有办法通过 mongodb API 用 cosmos 实现这个用例?即,无需在每次插入之前通过 fetch 查询检查唯一性。

尝试:浏览 cosmos 的文档并没有透露太多信息。他们声称支持 mongo 3.2 API,并且警告中没有提到稀疏索引。创建唯一稀疏索引createIndex不会导致错误,而只会创建唯一索引。在不同的字段上创建另一个类似的索引不会出错,但甚至不会创建唯一索引。它创建一个正常的索引。

更新:得到了 azure 支持团队的回复:

目前我们不支持稀疏索引。您可以这样做,即使用电话和电子邮件属性创建一个复合索引。

我认为复合索引不会对我的用例有所帮助,因为我希望电话和电子邮件在集合中都是全球唯一的,而不仅仅是它们的组合。

4

1 回答 1

-1

你能回顾一下这个 Stack Overflow 论坛帖子吗:Mongodb unique sparse index

请执行下列操作:

var UserSchema = new Schema({ // ... email: {type: String, default: null, trim: true, unique: true, sparse: true}, // ... });

注意: 唯一:真,稀疏:真

于 2018-10-08T19:57:45.890 回答