我有以下函数来获取整个文档:
public async Task<IEnumerable<dynamic>> GetAllPreferences(string queryString)
{
IDocumentQuery<dynamic> query = documentClient.CreateDocumentQuery<dynamic>(
UriFactory.CreateDocumentCollectionUri(collectionInfo.DatabaseName, collectionInfo.CollectionName))
.AsDocumentQuery();
List<dynamic> results = new List<dynamic>();
while (query.HasMoreResults)
{
results.AddRange(await query.ExecuteNextAsync<dynamic>());
}
return results;
}
但是在这里我无法使用queryString。 我的文档结构如下:
{
"type": [
"university",
"institute"
],
"preferences": [
{
"type": "university",
"universityDetail": [
.....
],
"state" : [
....
]
},
{
"type": "institute",
"instituteDetail": [
.....
],
"state" : [
....
]
}
]
}
我只能从每个文档中获取首选项。等效的 SQL 查询是“从collectionInfo.CollectionName中选择首选项”。
请建议代码编辑,并帮助我获得我的案例所需的确切查询字符串。
提前非常感谢。
最佳答案
您可以使用 SDK 尝试此代码:
public async Task<IEnumerable<dynamic>> GetAllPreferences(string queryString)
{
SqlQuerySpec queryStr = new SqlQuerySpec(queryString); //"select c.preferences from c"
FeedOptions feedOptions = new FeedOptions();
feedOptions.EnableCrossPartitionQuery = true;
IDocumentQuery<dynamic> query = documentClient.CreateDocumentQuery(UriFactory.CreateDocumentCollectionUri(collectionInfo.DatabaseName, collectionInfo.CollectionName), queryString, feedOptions).AsDocumentQuery();
List<dynamic> results = new List<dynamic>();
while (query.HasMoreResults)
{
results.AddRange(await query.ExecuteNextAsync<dynamic>());
}
return results;
}
关于c# - 从 c# 中的 cosmos db 获取给定查询字符串的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67598286/