我使用 mongodb 的官方 C# 驱动程序,我想使用 FindOne 查询中的 SetFields,例如 Find。
var query = Query.EQ("Name", name);
Users.Find(query).SetFields(Fields.Exclude("Password"));
是否可以这样做,因为 FindOne 返回一个实际的类而不是 mongodb 游标。
最佳答案
MongoCursor 的
SetFields
方法。
方法 FindOne 只是包装了 MongoCursor 并且在内部看起来是这样的:
public virtual TDocument FindOneAs<TDocument>() {
return FindAllAs<TDocument>().SetLimit(1).FirstOrDefault();
}
如果你想给它添加排除字段功能,你可以简单地为 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");
关于c# - 如何在MongoDB的FindOne中使用SetField For C# Driver,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6592752/