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

Dyl*_*yes 6 c# mongodb

我无法弄清楚我想要完成的语法.如上所述,我正在使用MongoDB的C#驱动程序.

我有一个用户实体定义为

[BsonIgnoreExtraElements]
public class User : MongoEntity
{
    [BsonElement]
    public string Username { get; set; }

    [BsonElement]
    public string Password { get; set; }

    [BsonElement]
    public string Email { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

我还有一个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;
}
Run Code Online (Sandbox Code Playgroud)

这是有效的,但我的问题是...而不是创建只查找Username == username,返回元素然后在if语句中比较密码的Query,我可以以某种方式将更多字段附加到初始entityQuery对象.

dav*_*mos 13

你可以Query.And()像这样使用......

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

请参阅CSharp驱动程序教程

或者您可以使用LINQ样式,请参阅:CSharp Driver LINQ Tutorial

这也很有趣:如何使用MongoCursor重写具有投影要求的MongoDB C#LINQ

  • 不要觉得自己笨!:) 随着 MongoDB 的受欢迎程度不断提高,我相信它会有所帮助,因此为该问题 +1 ;) (2认同)