2011-07-06 5 views

Répondre

10

SetFields méthode de MongoCursor.

Méthode FindOne wrapper juste MongoCursor et intérieurement, il a l'air si:

public virtual TDocument FindOneAs<TDocument>() { 
    return FindAllAs<TDocument>().SetLimit(1).FirstOrDefault(); 
} 

Si vous voulez ajouter Exclure la fonctionnalité des champs à ce que vous pouvez simplement ajouter la méthode extention pour MongoCollection:

public static class MongodbExtentions 
{ 
    public static T FindOne<T>(this MongoCollection collection, 
           params string[] excludedFields) 
    { 
     return collection.FindAllAs<T>().SetLimit(1) 
             .SetFields(excludedFields) 
             .FirstOrDefault(); 
    } 
} 

et utilisation comme ceci:

var user = Users.FindOne<User>("Password"); 
+0

Thx. J'ai juste oublié que c'est opensource. – Kuroro

+0

@Kuroro: vous êtes les bienvenus –

+0

Changé à "in" cludedFields puisque cela fait plus de sens que "ex" cludedFields –

3

Je ne suis pas sûr de l'exclusion dans findOne. Mais au lieu de findOne, vous pouvez mieux utiliser find avec la limite 1. Cela retournerait un curseur, ce qui, bien sûr, supporterait l'exclusion d'un champ. Quelque chose comme:

var theCursor = Users.Find(query).SetFields(Fields.Exclude("Password")).SetLimit(1) ; 
var myItem = null; 
foreach (var item in cursor) { 
    myItem = item ; 
} 
+0

Merci pour votre réponse, j'ai mis à jour t Il question pour plus d'usage général SetFields – Kuroro