我正在使用带有Azure DocumentDb的Web API 2。 我编写了这段代码来调用匹配字符串的第一个文档:
var x = this.client.CreateDocumentQuery<Product>((await this.collection).DocumentsLink)
.Where(x => x.Name == "Hello1")
.AsEnumerable()
.FirstOrDefault();
但结果始终为null。
SelfLink和DocumentsLink的值均为:
(await this.collection).SelfLink = "dbs/h4IDAA==/colls/h4IDAPEiOAA=/";
(await this.collection).DocumentsLink= "dbs/h4IDAA==/colls/h4IDAPEiOAA=/docs/";
代码正在连接到DocumentDb,添加文档或更新没有问题。
我的代码中有什么问题?
答案 0 :(得分:0)
根据您的代码,我已在我身边测试过,这是我的代码段:
public IHttpActionResult Get()
{
var doc = client.CreateDocumentQuery<GroupedSales>(UriFactory.CreateDocumentCollectionUri(DatabaseId, CollectionId))
.Where(x => x.Site == 2)
.AsEnumerable()
.FirstOrDefault();
return Json(doc);
}
结果:
为了解决此问题,您可以利用Fiddler捕获网络跟踪,如下所示:
您需要检查查询请求中的query
有效内容和详细响应。对于您的查询,我认为您的query
看起来像SELECT * FROM root WHERE (root[\"Name\"] =\"Hello1\")
。此外,您可以在Azure门户中使用DocumentDB Query Explorer来检查您的查询是否可以检索您的集合下的预期文档。