我来自使用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);
});
答案 0 :(得分:4)
答案 1 :(得分:3)
DocumentDB没有定义唯一约束的本机支持。 IF ({INDICATOR} = 'Y') Then
(
ToText({numeric value})
)
Else if ({INDICATOR} <> 'Y') Then
(
""
);
属性是一个特殊的例外,它是文档的主键,必须是唯一的。
您可以利用DocumentDB的triggers对其他文档属性实施唯一约束。我在Github here上有一个示例触发器。
从索引角度来看 - 默认情况下,每个文档中的每个属性都会自动编入索引。如果您希望专门调整哪些路径被索引,哪些路径不被索引,则可以在集合级别定义自定义index policy。
答案 2 :(得分:1)
实际上很容易。但是您必须在创建集合时执行此操作。
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 ...
}
}
有关更多信息,请访问my blog