私が達成しようとしているものの構文を理解できません。前述のように、私はMongoDBのC#ドライバを使用しています。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; }
}
として定義Userエンティティを持っている私も自分のmongoデータベースでのユーザーのコレクションに対してアクションを実行UserServiceのクラスを持っています。以下は、実際の単純なログインの例を作成する方法の例です。
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;
}
これは動作しますが、しかし、私の質問は...代わりに、==ユーザ名を唯一のユーザー名を検索するクエリを作成する要素を返し、その後if文でパスワードを比較するのは、私は何とか複数のフィールドを追加することができています最初のentityQuery
オブジェクトに転送します。
var entityQuery = Query.And(
Query<User>.EQ(e => e.Username, username.ToUpper()),
Query<User>.EQ(e => e.Password, password)
);
を参照するか、またはあなたはそれをLINQスタイルを行うことができます。このようなQuery.And()
を使用することができます
'Query.And'?それはあなたが探しているものですか? – WiredPrairie