我们可以像Skip和Top那样进行分页
从联系人中选择10个PostId
在DocumentDB?
我最近意识到DocumentDB通过ReplaceDocumentAsync支持独立的更新操作.
我用Replace操作替换了下面的Upsert操作.
var result = _client
.UpsertDocumentAsync(_collectionUri, docObject)
.Result;
Run Code Online (Sandbox Code Playgroud)
所以这是现在:
var result = _client
.ReplaceDocumentAsnyc(_collectionUri, docObject)
.Result;
Run Code Online (Sandbox Code Playgroud)
但是,现在我得到了例外:
Microsoft.Azure.Documents.BadRequestException:ResourceType Document是意外的.ActivityId:b1b2fd71-3029-4d0d-bd5d-87d8d0a2fc95
不知道为什么,upsert和replace具有相同的静脉,而且对象与upsert相同,所以我希望它可以毫无问题地工作.
所有帮助赞赏.
谢谢
更新:尝试使用SelfLink方法实现此功能,并且适用于替换,但自身链接不适用于Upsert.这种行为令人困惑.我不喜欢我必须使用字符串连接在代码中构建自我链接.
这是DocumentDB上的一个新问题.我们希望将DocumentDB用于我们的应用程序.我们有多个用户更改存储在DocumentDB中的数据.我们怎样才能确保一个用户不会覆盖另一个用户的更改?
使用.NET库,如何确定查询的RU费用.它返回IQueryable,我不知道如何记录它.如何记录所有请求的RU的奖励点.
简单的代码,但不返回RU:
var docs = DocumentDBRepository<CampaignMessage>.client.
CreateDocumentQuery<CampaignMessage>(UriFactoryExtensions.CreateCollectionUri(), new FeedOptions() { MaxItemCount = -1, MaxDegreeOfParallelism = 5 }).Where(x => x.BlastKey == "abc-796").
Run Code Online (Sandbox Code Playgroud) 我有2个Azure Cosmos DB,它运行在MongoDb中.第一个是由其他人创建的,第二个是由我创建的.
如果我查询我的数据库,我的结构与$ t和$ v属性变得非常奇怪.
我的结构:
我的后端与两者都能正常工作,但我想添加Azure搜索,我不能用我的结构来做这件事.为什么会发生这种情况,我该如何解决?
当我尝试从Windows 7启动CosmosDB模拟器时,我收到错误消息'程序无法启动,因为您的计算机缺少api-ms-win-core-path-l1-1-0.dll. ".
需要支持来修复此错误.
谢谢.
是否可以获得Cosmos DB集合中每个分区的大小?我知道门户网站将在Metrics刀片中显示集合中的前几个分区,但我很有兴趣看到每个分区的大小.
我正在编写单元测试DocumentDBRepository但是我得到了一个空引用异常.我使用Moq框架和XUnit.
这是我DocumentDBRepository课堂上的方法.
public class DocumentDBRepository<T> : IRepository<T> where T: class
{
private static string DatabaseId;
private static string CollectionId;
private static IDocumentClient client;
public DocumentDBRepository(IDocumentClient documentClient, string databaseId, string collectionId)
{
DatabaseId = databaseId;
CollectionId = collectionId;
client = documentClient;
CreateDatabaseIfNotExistsAsync().Wait();
CreateCollectionIfNotExistsAsync().Wait();
}
public async Task<IDocumentQuery<T>> GetQuery(Expression<Func<T, bool>> predicate)
{
try
{
IDocumentQuery<T> query = client.CreateDocumentQuery<T>(
UriFactory.CreateDocumentCollectionUri(DatabaseId, CollectionId),
new FeedOptions { MaxItemCount = -1, EnableCrossPartitionQuery = true })
.Where(predicate)
.AsDocumentQuery();
return query;
}
catch (Exception e) …Run Code Online (Sandbox Code Playgroud) 我有存储过程,该过程仅基于Etag更新文档。
我已经获取了3种文档,更新了所有3种文档的某些属性。我正在尝试更新存储过程中的所有3个文档。但是在存储过程更新第3个文档之前,另一个用户更新了第3个文档。所以在这种情况下,我确实会出现并发错误。我可以在存储过程中获取文档,但是我不确定必须更新哪个属性,因为我不知道该属性是由我还是由存储过程中的其他用户修改的,因为它只是替换了文档。与文档需要更新的所有地方所使用的存储过程相同,因此我无法对其进行硬编码。
我该如何处理?
在实体框架代码优先方法中,我们确实为SQL 提供了DbUpdateConcurrencyException类,从中我们可以看到哪个属性被修改并采取相应的Action。Cosmos DB中是否提供类似于DbUpdateConcurrencyException的异常类?
我确实读过DocumentDB的第3部分– DocumentDB中的并发和DocumentDB –存储过程中的乐观并发,这两篇文章都告诉我们如何使用Etag处理乐观并发。
我正在将一个非常简单的mongo数据库(夫妇100个条目)迁移到Azure Cosmos DB。我的应用程序基于node-js,所以我使用猫鼬作为映射器。在非常简单之前,先定义架构,查询集合并完成。
现在,当在cosmos db中设置集合时,有人问我分区键和分片键的问题。我可以忽略的第一个,但最后一个是必需的。快速阅读有关该主题的内容并了解它是一种分区(再次,我不需要也不想),我只是选择_id作为分片键。
当然有些东西行不通。
虽然查找查询工作正常。更新或插入记录失败,以下是错误:
MongoError:命令中的查询必须针对单个分片键
Cosmos db(使用mongo API)被广告宣传为我的替代产品。显然不是这种情况,因为我从来不需要担心mongo中的这类事情,尤其是对于这么小的app / db。
因此,我可以以某种方式禁用分片吗?另外,我如何定义分片键,而不用担心它呢?
干杯