Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#驱动程序不工作时查询mongodb_C#_Mongodb - Fatal编程技术网

C#驱动程序不工作时查询mongodb

C#驱动程序不工作时查询mongodb,c#,mongodb,C#,Mongodb,在从internet粘贴示例以查询mongodb并查找字段时,我遇到以下错误 我看不出我做错了什么,如果不能很快解决问题,我想我会回到SQL:( 我只想说给我找三门车 谢谢你的帮助!非常感谢 连接代码 public MongoDatabase GetDatabase { get { MongoClient mc = new MongoClient(); var server = mc.GetServer(); return serv

在从internet粘贴示例以查询mongodb并查找字段时,我遇到以下错误

我看不出我做错了什么,如果不能很快解决问题,我想我会回到SQL:(

我只想说给我找三门车

谢谢你的帮助!非常感谢

连接代码

public MongoDatabase GetDatabase
{
    get
    {
        MongoClient mc = new MongoClient();
        var server = mc.GetServer();
        return server.GetDatabase("players");
    }
 }
var numberOfDoors = 3;

var collection = GetDatabase.GetCollection<CarCollection>("Cars");

// Have tried using my Car object instead of BsonDocument but little difference
var filter = Builders<BsonDocument>.Filter.Eq("NumberOfDoors", numberOfDoors);

var result = collection.Find(filter);
Argument 1: cannot convert from 'MongoDB.Driver.FilterDefinition<MongoDB.Bson.BsonDocument>' to 'MongoDB.Driver.IMongoQuery'
{
    "_id" : ObjectId("..."),
    "Members" : [ 
        {
            "EmailAddress" : "",
            ...
        }, 
        {
            "EmailAddress" : "",
            ...
        }, 
        {
            "EmailAddress" : "",
            ...
        }
    ]
}
public class MemberCollection
{
    public ObjectId _id { get; set; }

    public MemberEntity[] Members { get; set; }
}

public class MemberEntity
{
    public int _id { get; set; }

    public string Password { get; set; }

    public string EmailAddress { get; set; }
}
代码示例

public MongoDatabase GetDatabase
{
    get
    {
        MongoClient mc = new MongoClient();
        var server = mc.GetServer();
        return server.GetDatabase("players");
    }
 }
var numberOfDoors = 3;

var collection = GetDatabase.GetCollection<CarCollection>("Cars");

// Have tried using my Car object instead of BsonDocument but little difference
var filter = Builders<BsonDocument>.Filter.Eq("NumberOfDoors", numberOfDoors);

var result = collection.Find(filter);
Argument 1: cannot convert from 'MongoDB.Driver.FilterDefinition<MongoDB.Bson.BsonDocument>' to 'MongoDB.Driver.IMongoQuery'
{
    "_id" : ObjectId("..."),
    "Members" : [ 
        {
            "EmailAddress" : "",
            ...
        }, 
        {
            "EmailAddress" : "",
            ...
        }, 
        {
            "EmailAddress" : "",
            ...
        }
    ]
}
public class MemberCollection
{
    public ObjectId _id { get; set; }

    public MemberEntity[] Members { get; set; }
}

public class MemberEntity
{
    public int _id { get; set; }

    public string Password { get; set; }

    public string EmailAddress { get; set; }
}
C#结构

public MongoDatabase GetDatabase
{
    get
    {
        MongoClient mc = new MongoClient();
        var server = mc.GetServer();
        return server.GetDatabase("players");
    }
 }
var numberOfDoors = 3;

var collection = GetDatabase.GetCollection<CarCollection>("Cars");

// Have tried using my Car object instead of BsonDocument but little difference
var filter = Builders<BsonDocument>.Filter.Eq("NumberOfDoors", numberOfDoors);

var result = collection.Find(filter);
Argument 1: cannot convert from 'MongoDB.Driver.FilterDefinition<MongoDB.Bson.BsonDocument>' to 'MongoDB.Driver.IMongoQuery'
{
    "_id" : ObjectId("..."),
    "Members" : [ 
        {
            "EmailAddress" : "",
            ...
        }, 
        {
            "EmailAddress" : "",
            ...
        }, 
        {
            "EmailAddress" : "",
            ...
        }
    ]
}
public class MemberCollection
{
    public ObjectId _id { get; set; }

    public MemberEntity[] Members { get; set; }
}

public class MemberEntity
{
    public int _id { get; set; }

    public string Password { get; set; }

    public string EmailAddress { get; set; }
}
更新-显示错误消息

public MongoDatabase GetDatabase
{
    get
    {
        MongoClient mc = new MongoClient();
        var server = mc.GetServer();
        return server.GetDatabase("players");
    }
 }
var numberOfDoors = 3;

var collection = GetDatabase.GetCollection<CarCollection>("Cars");

// Have tried using my Car object instead of BsonDocument but little difference
var filter = Builders<BsonDocument>.Filter.Eq("NumberOfDoors", numberOfDoors);

var result = collection.Find(filter);
Argument 1: cannot convert from 'MongoDB.Driver.FilterDefinition<MongoDB.Bson.BsonDocument>' to 'MongoDB.Driver.IMongoQuery'
{
    "_id" : ObjectId("..."),
    "Members" : [ 
        {
            "EmailAddress" : "",
            ...
        }, 
        {
            "EmailAddress" : "",
            ...
        }, 
        {
            "EmailAddress" : "",
            ...
        }
    ]
}
public class MemberCollection
{
    public ObjectId _id { get; set; }

    public MemberEntity[] Members { get; set; }
}

public class MemberEntity
{
    public int _id { get; set; }

    public string Password { get; set; }

    public string EmailAddress { get; set; }
}

文档结构

public MongoDatabase GetDatabase
{
    get
    {
        MongoClient mc = new MongoClient();
        var server = mc.GetServer();
        return server.GetDatabase("players");
    }
 }
var numberOfDoors = 3;

var collection = GetDatabase.GetCollection<CarCollection>("Cars");

// Have tried using my Car object instead of BsonDocument but little difference
var filter = Builders<BsonDocument>.Filter.Eq("NumberOfDoors", numberOfDoors);

var result = collection.Find(filter);
Argument 1: cannot convert from 'MongoDB.Driver.FilterDefinition<MongoDB.Bson.BsonDocument>' to 'MongoDB.Driver.IMongoQuery'
{
    "_id" : ObjectId("..."),
    "Members" : [ 
        {
            "EmailAddress" : "",
            ...
        }, 
        {
            "EmailAddress" : "",
            ...
        }, 
        {
            "EmailAddress" : "",
            ...
        }
    ]
}
public class MemberCollection
{
    public ObjectId _id { get; set; }

    public MemberEntity[] Members { get; set; }
}

public class MemberEntity
{
    public int _id { get; set; }

    public string Password { get; set; }

    public string EmailAddress { get; set; }
}

更新#2

更新3


您使用的
Builders.Filter.Eq()
不正确:

var numberOfDoors = 3;

var collection = ..GetCollection<CarCollection>("Cars");

var builder = Builders<CarCollection>.Filter;
var filt = builder.Where(car => car.NumberOfDoors == numberOfDoors);
var list = await collection.Find(filt).ToListAsync();

你的底线错了

Builders<BsonDocument>.Filter.Eq("NumberOfDoors", numberOfDoors);
根据您最近的编辑,您应该将过滤器定义更改为以下,因为您实际上正在尝试将过滤器放置在
成员
对象的嵌套数组上

var filter = Builders<MemberCollection>.Filter.Eq("Members.EmailAddress", emailAddress);
编辑:

不确定你的目的出了什么问题,但试一下如下

var collection = _mongoclientProvider.GetDatabase.GetCollection<MemberCollection>("Members");
Expression<Func<MemberCollection, bool>> expression = mc => mc.Members.Any(m => m.EmailAddress == emailAddress);
var list = collection.Find(expression).ToList();
var collection=\u mongoclientProvider.GetDatabase.GetCollection(“成员”);
Expression=mc=>mc.Members.Any(m=>m.EmailAddress==EmailAddress);
var list=collection.Find(expression.ToList();

谢谢,我已经删除了wait并改为ToList,因为该方法目前没有使用任务调用,但我仍然得到相同的结果error@Jamie你的收藏怎么样?@Jamie看到编辑了,抱歉!刚刚看到我的错误。
var filt
行已更改。不知道你可以使用
.Eq(字符串,字符串)
!提供了新的更新,但仍然得到相同的更新problem@Jamie,请参阅答案中的最终编辑,并告知是否有帮助。@Jamie,将此部分
Expression
更改为
Expression
FWIW:确保您没有在生产数据库中以明文形式存储密码。当然,这只是一个POC,但thanks@Jamie-有你吗你找到任何解决方案。我有完全相同的问题。顺便说一句,我使用的是2.5.0版本的mongodb网络驱动程序。