我想做一个简单的" LIKE"使用CreateDocumentQuery
使用LAMBDA表达式进行查询;然而,在尝试.Contains
和SqlMethod.Like
并且两次都收到回复NotImplementedException
后,我都不知道接下来要尝试什么!
答案 0 :(得分:3)
更新:自5/6/15起,DocumentDB添加了一组字符串函数,包括STARTSWITH
,ENDSWITH
和CONTAINS
。请注意,大多数这些功能都不会在索引上运行,并会强制进行扫描。
LIKE
和CONTAINS
。
您希望查看DocumentDB feedback page并对功能进行投票(例如LIKE和CONTAINS)以获取您的声音!
答案 1 :(得分:0)
因为我只需要搜索较大对象的一个谨慎的属性子集,我实现了.Contains
搜索功能,如下所示。尽管我不了解性能或可扩展性,但它仍按预期工作。
域名模型
public interface ITaxonomySearchable
{
string Name { get; set; }
string Description { get; set; }
}
public class TaxonomySearchInfo : ITaxonomySearchable {
[JsonProperty(PropertyName = "id")]
public Guid Id { get; set; }
[JsonProperty(PropertyName = "name")]
public string Name { get; set; }
[JsonProperty(PropertyName = "description")]
public string Description { get; set; }
}
public class TaxonomyContainer : ITaxonomySearchable
{
[JsonProperty(PropertyName = "id")]
public Guid Id { get; set; }
[JsonProperty(PropertyName = "userId")]
public string UserId { get; set; }
[JsonProperty(PropertyName = "name")]
public string Name { get; set; }
[JsonProperty(PropertyName = "description")]
public string Description { get; set; }
[JsonProperty(PropertyName = "tags")]
public string[] Tags { get; set; }
[JsonProperty(PropertyName = "taxonomy")]
public Node[] Taxonomy { get; set; }
}
搜索方法
public async static Task<List<TaxonomySearchInfo>> Search(string searchTerm)
{
var db = GetJsonDocumentDb.GetDb();
using (var client = GetJsonDocumentDb.GetClient())
{
var documentCollection = await GetJsonDocumentDb.GetDocumentCollection(db, client, "TaxonomyContainerCollection");
return client.CreateDocumentQuery<TaxonomySearchInfo>(documentCollection.DocumentsLink)
.AsEnumerable()
.Where(r => r.Name.Contains(searchTerm) || r.Description.Contains(searchTerm))
.ToList();
}
}