2011-07-06 34 views

回答

10

SetFields MongoCursor的方法。

方法FindOne只是包裝器MongoCursor並在內部它看起來如此:

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

如果你想添加排除字段的功能,它可以簡單地添加extention方法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(); 
    } 
} 

而且使用它是這樣的:

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

Thx。只是忘了它是開源的。 – Kuroro

+0

@Kuroro:不客氣 –

+0

更改爲「in」cludedFields,因爲這比「ex」更有意義cludedFields –

3

我不確定findOne中的排除。 但是,而不是findOne,你可以更好地使用限制1查找。 這將返回一個遊標,它將支持排除一個字段。 喜歡的東西:

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

謝謝你的回答,我已經更新了t他質疑更多通用SetFields – Kuroro

相關問題