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