c# - 如何在MongoDB的FindOne中使用SetField For C# Driver

标签 c# mongodb mongodb-.net-driver

我使用 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/

相关文章:

c# - ASP.NET:如何从已编译的程序集中重写非虚拟方法?

c# - 虚拟事件处理程序会导致任何问题吗

python - MongoDB:如何确定特定值不存在

mongodb - 在mongodb中查找除一个之外的所有

c# - System.TimeoutException : A timeout occured after 30000ms selecting a server using CompositeServerSelector

c# - SimpleInjector 为 RegisterManyForOpenGeneric 重复注册,以实现具有多个接口(interface)的实现

c# - 如何使用秒表测量 while 循环迭代平均值

javascript - 无法显示Mongo数据库中的数据

InsertOneAsync 后 MongoDB id 保持为空

c# - MongoDB .NET 驱动程序 2.0 中的 FindAll