我无法弄清楚我想要完成的语法。如上所述,我正在使用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<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,返回元素然后在if语句中比较密码的Query,我可以以某种方式将更多字段附加到intial { {1}}对象。
答案 0 :(得分:13)
您可以像这样使用Query.And()
......
var entityQuery = Query.And(
Query<User>.EQ(e => e.Username, username.ToUpper()),
Query<User>.EQ(e => e.Password, password)
);
或者您可以使用LINQ样式,请参阅:CSharp Driver LINQ Tutorial
这也很有趣:How to rewrite a MongoDB C# LINQ with a Projection Requirement using a MongoCursor