Azure Cosmos DB是否不支持MongoDB/Mongoose唯一索引?

Azure Cosmos DB是否不支持MongoDB/Mongoose唯一索引?,mongodb,azure,mongoose,azure-cosmosdb,Mongodb,Azure,Mongoose,Azure Cosmosdb,在Mongoose中使用唯一约束,如: email: { type:String, unique:true } 似乎不起作用。我可以用同一封电子邮件保存多个用户 要创建唯一索引,我需要做些什么吗?目前,MongoDB API for Cosmos DB不支持唯一索引。创建索引时不能指定unique:true 您需要在应用层中实现这一点 编辑-如前所述,该版本于2017年11月正式发布,使用MongoDB API。这可能是因为您的集合已经为您指定的字段提供了重复的值。您需要删除重复项或创建新数据

在Mongoose中使用唯一约束,如:

email: { type:String, unique:true }
似乎不起作用。我可以用同一封电子邮件保存多个用户


要创建唯一索引,我需要做些什么吗?

目前,MongoDB API for Cosmos DB不支持唯一索引。创建索引时不能指定
unique:true

您需要在应用层中实现这一点


编辑-如前所述,该版本于2017年11月正式发布,使用MongoDB API。

这可能是因为您的集合已经为您指定的字段提供了重复的值。您需要删除重复项或创建新数据库以启用唯一索引。

您需要先从集合中删除重复项。创建索引时将失败,因为存在重复项,因此无法创建。另一个常见原因是编写删除数据库的单元测试,“默认”后台模式索引创建在测试发布之前没有完成。@NeilLunn这是一个新集合-我没有重复项。此外,在我提交第二份包含相同信息的记录之前,我让它搁置了一段时间。我熟悉常规Mongo DB的行为。我是专门询问Azure Cosmos DB。Mongoose与Cosmos DB的MongoDB api是否支持唯一索引无关@NeilLunn的标签编辑是正确的,因为这个问题直接涉及Cosmos DB/DocumentDB(标签是同义词)。很多东西都不受支持,包括聚合、groupBy等。最好的选择是在亚马逊上使用官方MongoDb云(Atlas)(比谷歌云和azure便宜).Cosmos DB以前称为文档数据库,不支持唯一索引。触发器将无法工作,因为Mongo DB及其驱动程序不支持此功能;您必须在客户端代码中指定要用作选项的触发器。正如@DavidMakogon提到的,不幸的是,需要在应用程序中检查唯一性。正确-只是相应地更新了我的答案。感谢您指出这一点。无需创建新数据库。您需要创建新集合,因为具有唯一约束的createIndex仅适用于Cosmos DB中的空集合。如果要使用mongorestore/mongoimport导入现有集合,只需在Cosmos DB中的空集合上创建唯一索引后使用--noIndexRestore标志即可。@alekseys我可以将您的注释粘贴到我的答案中吗?有没有办法检查是否为数据收集启用了唯一索引?澄清一下,从11月17日起,现在支持唯一索引。我在现有集合上创建唯一索引时也遇到问题。删除所有行无法修复此问题。我必须重新创建集合,然后添加唯一的索引以使其正常工作。@LukeW-看看我的答案,其中包括一年前的一次编辑。