C#Mongo DB collection.find()方法不接受filter
这些是我的实体;
class User { [BsonId] public string Id { get; set; } public string name { get; set; } public List Adress { get; set; } } class Address { [BsonId] public string Id { get; set; } public string AddressName { get; set; } public string AddressDetail { get; set; } }
我的插入代码到mongo db如下,没有问题。
const string uri = "mongodb://usermehmet:inno12345@localhost/testDB"; var client = new MongoClient(uri); var db = client.GetServer().GetDatabase(new MongoUrl(uri).DatabaseName); counter++; User user=new User(); user.Id = ObjectId.GenerateNewId().ToString(); user.name = counter+"user"; user.Adress = new List(); Address a1=new Address(); a1.Id = ObjectId.GenerateNewId().ToString(); a1.AddressName = "Ev"; a1.AddressDetail = "a sokak b caddesi c no d kat"; Address a2=new Address(); a2.Id = ObjectId.GenerateNewId().ToString(); a2.AddressName = "İş"; a2.AddressDetail = "x sokak y caddesi z no f kat"; user.Adress.Add(a1); user.Adress.Add(a2); var collection2 = db.GetCollection("Users"); collection2.Insert(user);
但是我从mongodb网站( 查询元素的数组)中获取的查询操作是在var result = collection.Find(filter).ToList();
线。
const string uri = "mongodb://usermehmet:inno12345@localhost/testDB"; var client = new MongoClient(uri); var db = client.GetServer().GetDatabase(new MongoUrl(uri).DatabaseName); var collection = db.GetCollection("Users"); var filter = Builders.Filter.Eq("name", "100user"); var result = collection.Find(filter).ToList();
错误:
无法从MongoDB.Driver.FilterDefinition ConsoleApplication14.User转换为MongoDB.Driver.IMongoQuery
您可能正在使用旧版本的MongoDB .NET驱动程序,这可以从GetServer()
调用中看出。 在旧的API中, Find()
函数需要IMongoQuery
filter定义。
尝试更新MongoDB.Driver NuGet。 如果我没弄错的话,最新的是v2.5。
我通过mongo db new api方法解决了问题,问题是GetServer因为它已经过时了。
MongoClientSettings settings = MongoClientSettings.FromUrl(new MongoUrl("mongodb://usermehmet:inno12345@localhost/testDB")); var mongoClient = new MongoClient(settings); _database = mongoClient.GetDatabase("testDB"); var collection=_database.GetCollection("Users"); var result = collection.Find(x=>x.name=="100user").ToList();
- 尝试在.NET中使用EventLog.SourceExists方法时出现问题
- 使用物理路径中的HttpPostedFileBase.SaveAs保存上载的文件
- 使用itextsharp突出显示pdf中的单词,而不是在浏览器中显示突出显示的单词
- 如何将IEnumerable 或IQueryable 转换为EntitySet ?
- 插入访问数据库
- 在“属性”窗口中允许多行String属性
- entity framework自我跟踪实体不是Microsoft推荐的
- Preload()的不稳定行为
- LINQ to Entities无法将方法Generic.List(int)识别为Generic.IEnumerable(int)方法