假设我有一个包含许多文档的集合,并且我想查询该字段具有特定值的集合。但是,我不知道我们将在哪个字段查询。
这是我想要完成的一个例子:
文档azureDocuments = client.CreateDocumentQuery(UriFactory.CreateDocumentCollectionUri(sDatabaseName,sCollectionCollection))。其中(f => f.MyField = MyValue).AsEnumerable()。FirstOrDefault();
有没有人成功完成这项工作?
答案 0 :(得分:0)
使用CreateDocumentQuery到Azure DocumentDB传递字段和值以查询集合
您可以尝试在用户提供的fieldname
和fieldvalue
上动态生成谓词库,并根据谓词进行过滤。以下示例代码供您参考。
private async Task QueryDocs(string fieldname, string value)
{
Func<MyDoc, bool> criteria = d => d.id == d.id;
switch (fieldname)
{
case "id":
criteria = d => d.id == value;
break;
case "name":
criteria = d => d.name == value;
break;
//other cases...
}
string EndpointUri = "https://mydocumentdbtest.documents.azure.com:443/";
string PrimaryKey = "{primary key}";
DocumentClient client;
client = new DocumentClient(new Uri(EndpointUri), PrimaryKey);
var query = client.CreateDocumentQuery<MyDoc>(UriFactory.CreateDocumentCollectionUri("{databaseid}", "{collectionid}")).Where(criteria);
List<MyDoc> list = query.ToList();
}
public class MyDoc
{
public string id { get; set; }
public string name { get; set; }
}