2013-05-29 9 views
6

Ich habe Probleme herauszufinden, Syntax für das, was ich erreichen möchte. Wie gesagt, verwende ich den C# -Treiber für MongoDB.Multi-Feld-Abfragen mit C# -Treiber für MongoDB

Ich habe einen Benutzer Einheit definiert als

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

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

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

Ich habe auch eine Userservice-Klasse, die Aktionen gegen die User-Sammlung in meiner Mongo Datenbank durchführt. Unten ist ein Beispiel, wie ich ein wirklich einfaches Login-Beispiel erstelle.

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

Dies funktioniert, aber meine Frage ist ... stattdessen eine Abfrage zu erstellen, die nur für Benutzername aussieht == Benutzername, das Element zurückkehrt und dann das Kennwort in einer if-Anweisung zu vergleichen, kann ich irgendwie mehr Felder anhängen zum Anfang entityQuery Objekt.

+1

'Query.And'? Ist das wonach Sie suchen? – WiredPrairie

Antwort

12

Sie Query.And() wie diese verwenden können ...

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

Siehe CSharp Driver Tutorial

Oder man könnte es LINQ Stil finden Sie unter: CSharp Driver LINQ Tutorial

Dies ist auch zu interessant: How to rewrite a MongoDB C# LINQ with a Projection Requirement using a MongoCursor

+0

Nice Ich denke, je mehr LINQ-Ansatz ist wirklich, was ich von Anfang an wollte. Ich fühle mich irgendwie dumm, wenn ich mich nicht daran erinnern kann, wie ich das machen soll, aber vielleicht wird das jemand anderem ein paar Minuten des Stöberns ersparen. –

+0

Fühlen Sie sich nicht dumm! :) Da die Popularität von MongoDB weiter wächst, bin ich mir sicher, dass es helfen wird, also +1 für die Frage;) – davmos

Verwandte Themen