Azure cosmosdb 使用属性名称查询DocumentDB

Azure cosmosdb 使用属性名称查询DocumentDB,azure-cosmosdb,Azure Cosmosdb,我试过了 CreateDocumentQuery(this.collection.DocumentsLink) .Where(doc=>doc.GetPropertyValue(CollectionNameProperty)==collectionName) 但是它说,GetPropertyValue不受支持 我没有文档的POCO类型,因为模式是动态的。DocumentDB SQL是我唯一的选择吗?SQL是最好的选择,因为LINQ需要类型绑定 您也可以使用字典类型进行查询,然后转换为文档(可以

我试过了

CreateDocumentQuery(this.collection.DocumentsLink)
.Where(doc=>doc.GetPropertyValue(CollectionNameProperty)==collectionName)
但是它说,GetPropertyValue不受支持


我没有文档的POCO类型,因为模式是动态的。DocumentDB SQL是我唯一的选择吗?

SQL是最好的选择,因为LINQ需要类型绑定

您也可以使用字典类型进行查询,然后转换为文档(可以作为ExpandooObject读取,也可以使用JsonConvert进行转换)。但SQL将相对更干净:

CreateDocumentQuery<Document>(this.collection.DocumentsLink)
.Where(doc => doc.GetPropertyValue<string>(CollectionNameProperty) == collectionName)
var query=client.CreateDocumentQuery(collectionLink)
。其中(c=>(字符串)c[propertyName]==propertyValue);
Dictionary DocumentsDictionary=query.AsEnumerable().FirstOrDefault();
Document Document=JsonConvert.DeserializeObject(
序列化对象(DocumentsDictionary));

我如何接收多个项而不是FirstOrDefault?这只返回作为字典的第一级属性,但不包括嵌套对象或嵌套项目数组的情况@Aravind Krishna R.你会如何处理?有没有办法获取原始JSON字符串并手动反序列化?
var query = client.CreateDocumentQuery<Dictionary<string, object>>(collectionLink)
.Where(c => (string)c[propertyName] == propertyValue);

Dictionary<string, object> documentAsDictionary = query.AsEnumerable().FirstOrDefault();
Document document = JsonConvert.DeserializeObject<Document>(
    JsonConvert.SerializeObject(documentAsDictionary));