如何在MongoDB中的FindOne中使用SetField用于C#驱动程序
我使用mongodb的官方C#驱动程序,我想使用像Find这样的FindOne查询中的SetFields。
var query = Query.EQ("Name", name); Users.Find(query).SetFields(Fields.Exclude("Password"));
是否可以这样做,因为FindOne返回一个实际的类而不是mongodb游标。
MongoCursor的SetFields
方法。
方法FindOne只是包装MongoCursor并在内部看起来如此:
public virtual TDocument FindOneAs() { return FindAllAs ().SetLimit(1).FirstOrDefault(); }
如果要为其添加排除字段function,只需添加MongoCollection
扩展方法:
public static class MongodbExtentions { public static T FindOne(this MongoCollection collection, params string[] excludedFields) { return collection.FindAllAs ().SetLimit(1) .SetFields(excludedFields) .FirstOrDefault(); } }
并像这样使用它:
var user = Users.FindOne("Password");
我不确定findOne中的排除。 但是,不是findOne,你可以更好地使用限制1的find。 这将返回一个光标,它将支持排除一个字段。 就像是 :
var theCursor = Users.Find(query).SetFields(Fields.Exclude("Password")).SetLimit(1) ; var myItem = null; foreach (var item in cursor) { myItem = item ; }