过滤方法

时间:2016-07-09 21:19:26

标签: c# mongodb mongodb-query

如何使用Filter.In方法?

我有这样的文件:

{ 
  "File" : "xxxxxxx.txt",
  "Content" : [
      {   "tag" : "Book",
          "name" : "TestBook1",
          "value" : "xxx"
      },
      {   "tag" : "Dept",
          "name" : "TestDept1",
          "value" : "yyy"
      },
      {   "tag" : "Employee", 
          "name" : "TestEmployee1",
          "value" : "zzz"
      }]
}

我知道这样的过滤器:

var subFilter = Builders<BsonDocument>.Filter.Eq("tag", "Dept");

我可以

{   
    "tag" : "Dept",
    "name" : "TestDept1",
    "value" : "yyy"
}

假设我有很多不同的标签,我想找到像“Book,Dept,Employee,xxxxx,yyyyy,zzzzz ......”这样的字符串中的任何标签。

我尝试使用Filter.In()方法,但无法弄清楚如何传递所需的参数。

1 个答案:

答案 0 :(得分:1)

您需要创建IEnumerable(使用Contains方法的内容)。

因此,如果你的标签用逗号分隔,你可以:

var tags = tagsString.Split(new char[] { ',' }).Select(p => p.Trim());
var results = await collection.Find(p => tags.Contains(p.Tag)).ToListAsync();

http://mongodb.github.io/mongo-csharp-driver/2.0/reference/driver/expressions/