2013-05-29 14 views
6

Mam problem z określeniem składni dla tego, co próbuję wykonać. Jak stwierdzono, używam sterownika C# dla MongoDB.Kwantowe kwerendy przy użyciu sterownika C# dla MongoDB

Mam podmiot użytkownika zdefiniowany jako

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

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

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

Mam także klasę UserService który wykonuje działania przeciwko kolekcji użytkownika w mojej bazy danych Mongo. Poniżej znajduje się przykład tworzenia prawdziwego prostego przykładu logowania.

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

To działa, ale moje pytanie brzmi ... zamiast tworzyć kwerendy, która wygląda tylko o nazwę użytkownika == nazwę użytkownika, wracając element, a następnie porównując hasło w instrukcji if, mogę jakoś dołączyć więcej pól do pierwotnego obiektu entityQuery.

+1

'Zapytanie.I"? Czy tego właśnie szukasz? – WiredPrairie

Odpowiedz

12

Można użyć Query.And() takiego ...

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

Zobacz CSharp Driver Tutorial

Albo można zrobić to w stylu LINQ, zobacz: CSharp Driver LINQ Tutorial

Jest to również ciekawa: How to rewrite a MongoDB C# LINQ with a Projection Requirement using a MongoCursor

+0

Miło Myślę, że bardziej podejście LINQ jest tym, czego szukałem od samego początku. Czuję się trochę głupio, że nie pamiętam, jak to zrobić, ale może to uratuje kogoś jeszcze przez kilka minut. –

+0

Nie czuj się głupio! :) Ponieważ popularność MongoDB stale rośnie, jestem pewien, że to pomoże, więc +1 na pytanie;) – davmos

Powiązane problemy