MongoDB使用c#驱动程序进行多字段查询

本文关键字:字段 查询 使用 驱动程序 MongoDB | 更新日期: 2023-09-27 18:15:52

我很难弄清楚我想要完成的语法。如前所述,我正在使用MongoDB的c#驱动程序。

我有一个定义为

的User实体
[BsonIgnoreExtraElements]
public class User : MongoEntity
{
    [BsonElement]
    public string Username { get; set; }
    [BsonElement]
    public string Password { get; set; }
    [BsonElement]
    public string Email { get; set; }
}

我还有一个UserService类,它对我的mongo数据库中的User集合执行操作。下面是我如何创建一个真正简单的登录示例。

public UserPresentation Login(string username, string password)
{
    var entityQuery = Query<User>.EQ(e => e.Username, username.ToUpper());
    var entity = this.MongoConnectionHandler.MongoCollection.FindOne(entityQuery);
    return (entity != null && entity.Id.ToString().Length > 0 && entity.Password == password) ? new UserPresentation(entity) : null;
}

这是有效的,但我的问题是…比起创建一个只查找Username == Username的Query,返回元素,然后在if语句中比较密码,我可以在初始entityQuery对象上添加更多字段吗?

MongoDB使用c#驱动程序进行多字段查询

您可以这样使用Query.And()

var entityQuery = Query.And(
                      Query<User>.EQ(e => e.Username, username.ToUpper()),
                      Query<User>.EQ(e => e.Password, password)
                  );

参见CSharp驱动程序教程

或者你可以做LINQ风格,参见:CSharp驱动程序LINQ教程

这也很有趣:如何使用MongoCursor重写一个有投影需求的MongoDB c# LINQ