Tag: mongodb csharp 2.0

在MongoDB C#中展开组聚合

我在使用新的C#2.0 MongoDB驱动程序和聚合管道时遇到了一些麻烦。 基本上,我试图返回对象上数组字段中最受欢迎的元素。 字段类型为: IList FavouritePlaceIds { get; set; } IList FavouritePlaceIds { get; set; } IList FavouritePlaceIds { get; set; } 。 我有以下MongoDB聚合,它按预期工作: db.users.aggregate([ { $unwind : “$FavouritePlaceIds” }, { $group: { “_id”: “$FavouritePlaceIds”, “count”: {$sum: 1}}}, { $sort : { “count”: -1 }} ]) 但是,现在的问题是尝试使用新的MongoDB驱动程序2.0将其转换为C#代码。 我一直在使用以下链接获取有关聚合管道的帮助: http : //mongodb.github.io/mongo-csharp-driver/2.0/reference/driver/crud/reading/#unwind 到目前为止,我已经为我的聚合管道提供了以下内容: var pipeline = […]

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

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

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驱动程序并返回列表而不是任务吗?

MongoDB C#驱动程序2.0:如何从MapReduceAsync获取结果

MongoDB C#驱动程序2.0:如何从MapReduceAsync获取结果 我正在使用MongoDB版本3,C#驱动程序2.0,并将获得MapReduceAsync方法的结果。 我有这个集合“用户”: { “_id” : 1, “firstName” : “Rich”, “age” : “18” } { “_id” : 2, “firstName” : “Rob”, “age” : “25” } { “_id” : 3, “firstName” : “Sarah”, “age” : “12” } VisualStudio中的代码: var map = new BsonJavaScript( @” var map = function() { emit(NumberInt(1), this.age); };”); var reduce = […]

mongodb c#选择特定字段

需要一些帮助来创建一个通用方法来按名称选择字段。 像这样的东西: T GetDocField(string doc_Id, string fieldName) 我得到的最好的是使用投影 ,它给我的文档只有想要的字段: public T GetDocField(string Doc_Id, string fieldName) { var value = DocCollection.Find(d => d.Id == Doc_Id) .Project(Builders.Projection .Include(new StringFieldDefinition (fieldName))).FirstOrDefaultAsync().Result; 注意:我正在使用新的c#驱动程序(2.0) 谢谢!!

如何在C#驱动程序中设置MongoDB Change Stream’ManageType’?

运行新的MongDB服务器版本3.6,并尝试将更改流监视添加到集合以获取新插入和文档更新的通知时,我只接收更新通知,而不是插入。 这是我尝试添加手表的默认方式: IMongoDatabase mongoDatabase = mongoClient.GetDatabase(“Sandbox”); IMongoCollection collection = mongoDatabase.GetCollection(“TestCollection”); var changeStream = collection.Watch().ToEnumerable().GetEnumerator(); changeStream.MoveNext(); var next = changeStream.Current; 然后我从MongoDB下载了C#源代码,看看他们是如何做到这一点的。 查看他们的更改流手表的测试代码,他们创建一个新文档(插入),然后立即更改该文档(更新),然后设置Change Stream手表以接收’更新’通知。 没有给出关于如何观察“插入”通知的示例。 我已经查看了MongoDB网站和SO上的Java和NodeJS示例,这些示例似乎很简单,并定义了一种查看插入和更新的方法: var changeStream = collection.watch({ ‘$match’: { $or: [ { ‘operationType’: ‘insert’ }, { ‘operationType’: ‘update’ } ] } }); C#驱动程序的API有很大的不同,我原以为他们会为C#和Java和NodeJS保留相同的API。 我发现没有或只有很少的例子让C#做同样的事情。 我最接近的是以下尝试,但仍然失败,C#版本的文档非常有限(或者我找不到合适的位置)。 设置如下: String json = “{ ‘$match’: { ‘operationType’: { […]

Mongo C#驱动程序2.0 – 无需获取文档即可查找计数

一般计数查询将执行a int count = collection.Find(filter).Count(); 现在按照filter加载所有记录,所以我说我有100万条记录,其中有50万条与我的filter匹配,所以我的集合已经填满了0.5个文档。 如果你想要这些文件就足够了,但是如果你只是想知道计数而不是真的需要这些文件呢? 我可以这样做吗? int count = collection.Find(filter).SetLimit(1).Count(); 这给了我与第一个表达式相同的计数,但我希望内存不会被用作第一个表达式,帮助我知道找到“计数”的正确方法而不加载所有文档。 谢谢。

使用.NET驱动程序2.0在MongoDB中构建索引

使用新驱动程序2.0构建索引的新方法是什么? 没有关于此的任何文档。 显然这现在适用于新的IndexKeysDefinitionBuilder接口,但这是我到目前为止所有。

从MongoDB’集合’获取所有’文档’

我需要检索MongoDB中我的集合中的所有文档,但我无法弄清楚如何。 我已经宣布我的’collections’像这样 – private static IMongoCollection SpeCollection = db.GetCollection(“collection_Project”); 我按照MongoDB教程中的说明进行了操作。 我根据自己的需要调整了它,比如 – var documents = await SpeCollection.Find(new Project()).ToListAsync(); 但是,我一直有以下错误 – MongoDB.Driver.IMongoCollection没有’Find’的定义和扩展方法[superlong stuff]的最佳覆盖。 查找包含无效的参数。