复合查询在MongoDb C#驱动程序中查找文档

时间:2014-06-22 11:50:57

标签: c# mongodb

我是MongoDB的新手。我尝试使用MongoDB C#驱动程序find()方法并面临以下问题。

public IEnumerable<Ticket> GetTicketByUserId(string userId)
{
    var query = Query<Ticket>.EQ(ticket => ticket.User, userId);
    var tickets = DbCollection.Find(query);
    return tickets;
}

这里我想只匹配用户ID ... 在mongodb中它可以写成

db.Ticket.find({User: "-----"}) 像这样......

但我想像这样检查多个字段。

db.Ticket.find({User: "-----", Status:"High"})

bt我在C#中无法转换它。如何使用Mongo C#驱动程序检查多个字段,如此查询。我搜查了但是我找不到这样的东西。
我使用linq完成了它,但我想知道如何使用Find()

1 个答案:

答案 0 :(得分:2)

您可以使用LINQ到MongoDB:

var tickets = from t in DbCollection.AsQueryable<Ticket>()
              where t.User == userId && t.Status == "High"
              select t;

如果您想使用MongoQuery语法,只需将所有子查询传递给查询:

var query = Query.And(Query<Ticket>.EQ(t => t.User, userId),
                      Query<Ticket>.EQ(t => t.Status, "High"));

var tickets = DbCollection.Find(query);