【发布时间】:2016-04-18 09:21:47
【问题描述】:
我想查询 Microsoft Azure DocumentDB 集合以获取其“数组”属性(在 JSON 语音中)包含与给定过滤条件匹配的对象的所有文档。
这是我的文件:
public class CouponReadModel
{
public List<Models.BookEntry> BookEntries { get; set; }
// some other properties
public class Models
{
public class BookEntry
{
public Guid OrderId { get; set; }
// some other properties
}
}
}
首先我尝试使用 ANY(在这种情况下,TReadModel 是 CouponReadModel)
_documentClient
.CreateDocumentQuery<TReadModel>(_documentCollectionUri)
.Where(coupon => coupon.BookEntries.Any(be => be.OrderId == someOrderId));
我刚刚得到以下异常:
Exception thrown: 'Microsoft.Azure.Documents.Linq.DocumentQueryException' in mscorlib.dll
Additional information: Method 'Any' is not supported.
谷歌搜索“documentdb linq”将我带到这篇博文this。 伟大的!我对自己说没问题!该帖子告诉我,数组支持 LINQ 运算符计数(我的 BookEntries 集合?!)。第二次尝试!
_documentClient
.CreateDocumentQuery<TReadModel>(_documentCollectionUri)
.Where(coupon => coupon.BookEntries.Count(be => be.OrderId == someOrderId) > 0);
我遇到了另一个例外:
Exception thrown: 'Microsoft.Azure.Documents.Linq.DocumentQueryException' in mscorlib.dll
Additional information: Method 'Count' is not supported.
不支持计数?再试一次:
_documentClient
.CreateDocumentQuery<TReadModel>(_documentCollectionUri)
.Where(coupon => coupon.BookEntries.Count() > 0);
有效!好的,支持计数,但仅支持不带谓词的原始计数。
接下来要做什么?谁能告诉我如何查询 DocumentDB 以获得我想要的?
【问题讨论】:
-
我删掉了语言的不那么有趣的用法。让我们在这里保持成熟,好吗?
标签: azure-cosmosdb