Tag: mongodb .net driver

更新数组mongodb c#driver中的字段

我尝试从p2l数组更新对象的status字段 var update = Builders.Update.Set(“p2l.$.status”,BsonValue.Create(status)) 似乎代码可以正常工作,但如何使用类型化构建器实现它并使用lambda设置所有字段? 我通过以下链接找到了解决方案如何使用C#驱动程序更新MongoDB中数组子文档中包含的数组子文档中的字段? 但它仅适用于旧版本的驱动程序。

$ project或$ group不支持

我正在尝试使用投影运行聚合但我得到NotSupportedException: $project or $group does not support 。 我正在使用mongodb v3.4运行2.4.4版本的驱动程序。 var filter = Builders.Filter.Regex(x=>x.Value,”/test/gi”); var aggregate = collection.Aggregate() .Match(filter) .Project(x => new { Idx = x.Value.IndexOf(“test”), Result = x }) .SortBy(x => x.Idx); 我认为支持 IndexOfCP 。 我在这做错了什么?

用AddToSet更新不用MongoDB C#更新空值

使用MongoDB,当数组为null时,我无法在数组中添加en元素。 如果我从控制台添加项目,AddToSet按预期工作。 我正在使用10gen的官方C#驱动程序。 var query = Query.EQ(“_id”, objectId); var itemDoc = item.ToBsonDocument(); //items is an array but currently null var update = MongoDB.Driver.Builders.Update.AddToSet(“items”, itemDoc); // YUNoWork? //somefield doesn’t exist var workingUpdate = MongoDB.Driver.Builders.Update.AddToSet(“somefield”, itemDoc); //works fine var collection = DataBase.GetCollection(CollectionName); collection.Update(query, update); // doesn’t work collection.Update(query, workingUpdate); // works 这是预期的行为吗? 如果是这样,是否有更通用的方法将项添加到数组?

MongoDB:如何在C#中使用嵌套数组加载集合?

我有一个名为“服务器”的集合,包含以下文档。 { name: “West”, ip: “123.123.123.123”, channels: [ { name: “English”, port: “1234”, status: “0” }, { name: “Spanish”, port: “1235”, status: “0” }, { name: “German”, port: “1236”, status: “0” } ] }, { name: “East”, ip: “122.122.122.122”, channels: [ { name: “English”, port: “1234”, status: “0” }, { name: “French”, port: “1235”, status: […]

了解MongoDB中的WriteConcern C#

我一直在阅读MongoDB中的Write Concern 。 我知道有几个级别决定了写操作成功的保证级别,并且设置此级别的性能越高,性能权衡越大。 但是,我正在C#环境中工作,我正在试图弄清楚如何在那里使用Write Concern以及哪些级别对某些情况最有效。 我已经想出如何使用WriteConcernResult对象收集检查结果,我主要对关卡本身感兴趣。 这些是我的问题: 如何在C#中为特定写入设置Write Concern级别? 这个答案建议使用连接字符串,但这看起来像一个全局设置,我不想要,因为我将使用的一些写操作比其他更“重要”,我不想杀死性能。 我注意到有一个WriteConcern类,但文档中没有详细介绍它的使用(它在文档中的MongoDB.Driver命名空间下)。 特别是,我如何将其设置为“Journaled”或“Replica Acknowledged”,因为它默认为“已确认”? 对于每个级别,哪些类型的问题可以通过Write Concern检查? 例如:系统崩溃,电源故障,网络连接问题等。我对偷偷摸摸的东西特别感兴趣,因为电源故障等非常明显,我们可以估计操作可能失败的时间间隔。并做出相应的反应

在mongodb集合上无法做到这一点

我有两个模型,一个用户和一个团队,如下所示: [BsonRepresentation(BsonType.ObjectId)] public ObjectId _id { get; set; } [Display(Name = “Password:”)] public string Password { get; set; } [Display(Name = “Confirm:”)] public string ConfirmPassword { get; set; } [Display(Name = “Email:”)] public string Email { get; set; } [Display(Name = “Username:”)] public string UserName { get; set; } [Display(Name = “Firtname:”)] public string Firstname […]

MongoDB C#驱动程序2.0 InsertManyAsync与BulkWriteAsync

我必须使用新的C#2.0驱动程序在MongoDB集合中插入许多文档。 是使用collection.InsertManyAsync(…)collection.BulkWriteAsync(…)有什么区别? (特别是关于表现)。 根据我对MongoDB文档的理解,带有文档数组的插入应该是一个大量的操作。 那是对的吗? 谢谢你的帮助。

如何在新的mongo C#驱动程序中执行findAll并使其同步

我正在使用官方C#驱动程序来执行FindAll并升级到新的驱动程序2.0。 FindAll已过时,将替换为Find。 我试图转换一个简单的方法,返回一个Class1列表。 无法在文档中找到使用POCO的实际示例 var collection = database.GetCollection(Collection.MsgContentColName); return collection.FindAll().ToList(); 有人可以帮我转换2.0驱动程序并返回列表而不是任务吗?

我如何使用Moq IFindFluent来调用ToListAsync?

我正在测试MongoDB C#驱动程序的包装器。 我有这行代码: Collection.Find(predicate).ToListAsync(); 其中Collection的类型为IMongoCollection而Find(predicate)返回实现IFindFluent的实例。 ToListAsync()是将结果转换为列表的扩展,我假设。 我正在尝试编写unit testing,我很难处理这个问题。 我不能创建一个包装类,因为那就是我正在做的事情。 我更愿意这样做,所以ToListAsync()返回一个创建的列表或模拟Find()返回一些可以列出的列表。

如何在数组.NET驱动程序中的项的属性上创建MongoDB MultiKey索引

我有一个包含项目的MongoDB集合“foos”,每个项目都有一个“bars”数组。 也就是说,“foo”具有以下架构: { “id”: UUID “name”: string … “bars”: [ “id”: UUID “key”: string … ] } 我需要使用MongoDB C#.NET Mongo驱动程序在name和bar.key上创建索引。 我假设我可以使用Linq Select函数执行此操作,如下所示: Indexes.Add(Context.Collection().Indexes.CreateOne( Builders.IndexKeys .Descending(x => x.Bars.Select(y => y.Key)))); 但是,这会导致InvalidOperationException: System.InvalidOperationException:’无法确定x => x.Bars.Select(y => y.Id)的序列化信息。 关于MultiKey索引的Mongo文档显示了如何使用简单的点表示法创建这样的索引,即 db.foos.createIndex( { “name”: 1, “bars.key”: 1 } ) 但是,MongoDB驱动程序文档似乎表明我正在使用Linq函数是正确的。 如何使用MongoDB .NET驱动程序在我的集合上创建多键索引,最好使用Linq函数?