使用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; } } 

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

 public UserPresentation Login(string username, string password) { var entityQuery = Query.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,返回元素,然后在if语句中比较密码的Query,我可以以某种方式将更多字段附加到初始entityQuery对象。

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

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

请参阅CSharp驱动程序教程

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

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