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
对象上添加更多字段吗?
您可以这样使用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