MongoDB文本搜索字符串数组

时间:2011-05-26 16:56:59

标签: mongodb mongodb-.net-driver norm

我有以下课程:

public class Movie
{
    string Name get; set;
    string Director get;  set;
    IList<String> Tags get; set;
}

如何查询标签?我想用like %term%查询为SQL。我尝试使用/term/i,但它不起作用。

term = string.Format(@"/{0}/i", term);
var tags = db.GetCollection().Find( 
    new { Tags = term  }, 
    new { Tags = OrderBy.Descending },
    new { Tags = 1}, 8, 0).ToList();

有什么想法吗?

3 个答案:

答案 0 :(得分:2)

正确的查询是:

 var tags = db.GetCollection().Find( 
 new { Tags = Q.Matches(string.Format(@".*{0}.*", term))},
 new { Tags = OrderBy.Descending }, new { Tags = 1}, 8, 0).ToList();

答案 1 :(得分:0)

答案 2 :(得分:0)

更好的是,您可以在NORM LINQ提供程序中使用Regex(参考http://schotime.net/blog/index.php/2010/04/29/nosql-norm-mongodb-and-regular-expressions)。

_provider.GetCollection<T>().AsQueryable()
  .Where(t =>
    Regex.IsMatch(t.Tags, String.Format(".*{0}.*", term), RegexOptions.IgnoreCase))
 .OrderByDescending();