Tag: mongodb csharp 2.0

MongoDb c#driver按字段值查找数组中的项目

我发现检查的方法是在简单数组中包含的值: var filter = Builders.Filter.AnyEq(x => x.Tags, “mongodb”); 但是如何通过具体领域找到包含许多字段的复杂项目? 我找到了用BsonDocument构建器通过点符号方法编写它的方法,但是如何使用类型化的lambda符号呢? UPD 我觉得它有点像 builderInst.AnyIn(p => p.ComplexCollection.Select(ml => ml.Id), mlIds) 但现在无法检查,有人可以帮忙吗?

在C#中从mongodb获取单个对象

我已经选择了一段使用MongoDB驱动程序的代码来从集合中获取单个对象……这可能不对,可以吗? 有更好的方法来获得这个吗? IMongoCollection userCollection; …. userCollection.FindAsync(x => x.Id == inputId).Result.ToListAsync().Result.Single();

C#MongoDB.Driver GetServer已经过时了,现在怎么办?

来自mongoDB.Driver文档( http://docs.mongodb.org/ecosystem/tutorial/getting-started-with-csharp-driver/ ) 获取对服务器对象的引用 要从客户端对象获取对服务器对象的引用,请写下: var server = client.GetServer(); 在最新版本中, GetServer方法已经消失,但文档尚未更新,我们现在使用了什么? 谢谢你的时间。

在MongoDB C#驱动程序中获取生成的脚本

我使用的是MongoDB.Driver 2.0.0。 有没有办法看到从linq到MongoDB生成的脚本? 例如,我的查询如下: IFindFluent findFluent = Collection.Find( x => hashValues.Contains(x.UrlHash) && x.ProductTopic == topicId); 如何(或更复杂的查询)在MongoDB shell中表示?

如何使用MongoDB 2.0进行upsert?

MongoDB的界面与前一个界面完全不同。 在这里,您可以看到官方文档,其中包含有关如何搜索,插入和更新的一些示例,但有关upserts的内容呢? meta的想法:我试图在谷歌和SO上搜索但很多资源都是指旧界面。 也许创建一个MongoLegacy标签会很好。

如何在MongoDB C#Driver 2.0中记录我的查询?

刚刚将我的应用程序升级到最新的稳定MongoDB C#Driver 2.0。 在迁移过程中,基本function已被破坏,即使是最简单的查询,例如: this.collection.Find(e => e.Id == id).SingleOrDefaultAsync()也不会返回正确的数据。 检查了类映射和约定,但我希望看到输出查询以正确识别问题。 那么,应该如何在MongoClient端完成? 在数据库级别设置分析是可能的,但不是一个好的解决方案,因为我们有几个应用程序和开发人员使用数据库。 我的应用程序目前在UI,业务和EF数据访问中使用Ninject.Extensions.Logging和log4net 。

将Dictionary 序列化为BSON时的BsonSerializationException

我最近从已弃用的v1.9转移到了新的MongoDB C#驱动程序v2.0 。 现在,当我序列化一个有字典的类时,我有时遇到以下BsonSerializationException : MongoDB.Bson.BsonSerializationException:使用DictionaryRepresentation.Document时,键值必须序列化为字符串。 这是一个最小的重现: class Hamster { public ObjectId Id { get; private set; } public Dictionary Dictionary { get; private set; } public Hamster() { Id = ObjectId.GenerateNewId(); Dictionary = new Dictionary(); Dictionary[DateTime.UtcNow] = 0; } } static void Main() { Console.WriteLine(new Hamster().ToJson()); }

将FilterDefinition 转换为我可以在mongo shell中运行的常规json mongo查询

我有很多复杂的查询,我有时希望直接检查Mongo的调试\解释()目的。 使用较新的2.0+ c#驱动程序,我不知道如何做到这一点。 在之前的版本中有一个名为IMongoQuery的东西, 这很有效。 一个简单的例子: FilterDefinition filter = Builders.Filter .Where(e => ids.Contains(e.Id) && e.Deleted != true );

2.0驱动程序中的MongoServer.State等价物

在旧的API(1.X)中,您可以使用MongoServer返回的MongoServer实例上的State属性来判断服务器是否已连接: public bool IsConnceted { get { return _client.GetServer().State == MongoServerState.Connected; } } 但是, GetServer不是新API(2.0)的一部分。 怎么能实现呢?

Find和FindAsync之间的区别

我正在编写一个非常非常简单的查询,它根据其唯一ID从集合中获取文档。 经过一些frusteration(我是mongo和async / await编程模型的新手)后,我想出了这个: IMongoCollection collection = // … FindOptions options = new FindOptions { Limit = 1 }; IAsyncCursor task = await collection.FindAsync(x => x.Id.Equals(id), options); List list = await task.ToListAsync(); TModel result = list.FirstOrDefault(); return result; 它很棒! 但我一直看到对“查找”方法的引用,我解决了这个问题: IMongoCollection collection = // … IFindFluent findFluent = collection.Find(x => x.Id == id); findFluent = […]