Azure cosmosdb 如何使用documentDB创建唯一索引

Azure cosmosdb 如何使用documentDB创建唯一索引,azure-cosmosdb,Azure Cosmosdb,我来自使用mongoDB,所以我会以它为例,在它中我可以做一些类似的事情 collection.ensureIndex('id', {unique: true, dropDups: true }); 然后,每当我尝试插入具有相同id的数据时,我都会得到一个重复的密钥错误,并且无法工作。太好了 但是documentDB可以做类似的事情吗 目前,我使用node.js编写了以下代码来插入数据: client.createDocument(collection_id, data_to_insert,

我来自使用mongoDB,所以我会以它为例,在它中我可以做一些类似的事情

collection.ensureIndex('id', {unique: true, dropDups: true });
然后,每当我尝试插入具有相同id的数据时,我都会得到一个重复的密钥错误,并且无法工作。太好了

但是documentDB可以做类似的事情吗

目前,我使用node.js编写了以下代码来插入数据:

client.createDocument(collection_id, data_to_insert, function (err, doc) {
    callback(err, doc);
});

DocumentDB不具有定义唯一约束的本机支持。
id
属性是一个特殊的例外,它是文档的主键,并且必须是唯一的

您可以利用DocumentDB对其他文档属性实现唯一约束。我在Github上有一个示例触发器


从索引角度看-默认情况下,每个文档中的每个属性都会自动索引。如果您希望特别调整哪些路径被索引,哪些不被索引,您可以在集合级别定义一个自定义。

现在支持唯一约束:。

实际上很容易。但你必须在集合创建时完成

DocumentCollection myCollection = new DocumentCollection();
myCollection.Id = "ClientCollection";
myCollection.UniqueKeyPolicy = new UniqueKeyPolicy
{
    UniqueKeys =
    new Collection<UniqueKey>
    {
        new UniqueKey { Paths = new Collection<string> { "/name" , "/country" }}
        new UniqueKey { Paths = new Collection<string> { "/users/title" } },
    }
};
await client.CreateDocumentCollectionAsync(
    UriFactory.CreateDatabaseUri(dataBase),
    myCollection,
    new RequestOptions { OfferThroughput = 400 });

欲了解更多信息,请访问

,该链接似乎成了网络攻击的受害者。您可以在这里找到最新的示例:支持节点客户端吗?它似乎不在文件中。
try
{
    response = await client.CreateDocumentAsync(collectionUri, document, requestOptions);
}
catch (Microsoft.Azure.Documents.DocumentClientException ex)
{
    if ( ex.StatusCode == System.Net.HttpStatusCode.Conflict )
    {
        // Unique key constraint violation ...
    }
}