Azure cosmosdb 如何使用documentDB创建唯一索引
我来自使用mongoDB,所以我会以它为例,在它中我可以做一些类似的事情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,
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 ...
}
}