Tag: mongodb .net driver

将元素插入Mongodb中的嵌套数组中

我有这个 : { “_id” : ObjectId(“4fb4fd04b748611ca8da0d48”), “Name” : “Categories”, “categories” : [{ “_id” : ObjectId(“4fb4fd04b748611ca8da0d46”), “name” : “SubCategory”, “sub-categories” : [{ “_id” : ObjectId(“4fb4fd04b748611ca8da0d47”), “name” : “SubSubCategory”, “standards” : [] }] }] } 我想使用C#驱动程序添加一个新的SubCategory 。 有最佳方​​法吗?

如何为MongoDb命名空间中的所有类注册ClassClassMap?

MongoDB驱动程序教程建议将类映射注册到automap via BsonClassMap.RegisterClassMap(); 我想自动化给定命名空间的所有类,而不是为每个类显式写下RegisterClassMap。 这目前可能吗?

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

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

MongoDB C#驱动程序 – 如何将_id存储为ObjectId但是映射到字符串Id属性?

我无法让我的模型将实体的Id属性表示为字符串,但将其自动生成并由MongoDb在内部表示为本机ObjectId 。 class Account { public string Id { get; set; } … } class AccountStore { static AccountStore() { BsonClassMap.RegisterClassMap(cm => { cm.AutoMap(); cm.SetIgnoreExtraElements(true); // map Id property here }); } public void Save(Account account) { _accounts.Save(account); } } 对于上面代码中的// map Id property here行,我尝试了许多不同的配置Id映射的方法,但没有一种方法有效。 我尝试过的方法以及调用Save方法时抛出的相关exception是: // Exception: No IdGenerator found. cm.IdMemberMap .SetRepresentation(BsonType.ObjectId); // Exception: […]

从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]的最佳覆盖。 查找包含无效的参数。

在Mongo DB中升级和Id问题

使用官方C#驱动程序向mongo db发送插件时遇到问题。 public abstract class AggregateRoot { /// /// All mongoDb documents must have an id, we specify it here /// protected AggregateRoot() { Id = ObjectId.GenerateNewId(); } [BsonId] public ObjectId Id { get; set; } } 我的实体已经拥有了id-s但我必须创建mongo特定的ID才能使用,因为集合中的所有文档都应该有一个。 现在我在我的系统中收到一个新实体,生成一个新的Mongo Id,我得到的mongo无法更改文件旧exception的_id 。 有一些解决方法吗? 让我来描述一下设计。 将作为文档存储的所有实体都inheritance自AggregateRoot,其中包含id生成。 每个子文档都自动生成了id,我对此没有任何问题。 引入AggregateRoot中的id是为了在从MongoCollection到List检索数据时纠正问题,并且引入了生成,因此id-s不同。 现在我们可以移动id生成来保存方法,因为更新的新实体有一个新的id生成。 但这意味着团队中的每个开发人员都不能忘记在存储库中生成id-s,这是有风险的。 如果可能的话,忽略id而不是mongo的映射会更好,而根本就没有AggregateRoot类

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) 但现在无法检查,有人可以帮忙吗?

将BSON数组添加到MongoDB中的BsonDocument

如何使用C#驱动程序将BsonArray添加到MongoDB中的BsonDocument? 我想要一个像这样的结果 { author: ‘joe’, title : ‘Yet another blog post’, text : ‘Here is the text…’, tags : [ ‘example’, ‘joe’ ], comments : [ { author: ‘jim’, comment: ‘I disagree’ }, { author: ‘nancy’, comment: ‘Good post’ } ] }

使用MongoDB C#Driver反序列化多态类型

假设,我有一个基类 public class Node{ public ObjectId Id; public String nodeName; public ObjectId parentNode; } 和2个派生类 public class PlotNode:Node{ public ObjectId Id; public String plotDetail; } public class EndNode:Node{ public ObjectId Id; public int resultCode; } 序列化的所有3个类的几个对象都在数据库中。 并且只有我拥有的数据是ObjectId的列表,并且只有这些ID的知识是它们肯定是Node ids,但是它们在反序列化时间内不知道它们是Node,PlotNode还是EndNode。 我用它来反序列化: var collection = db.GetCollection(“nodes”); var query = Query.EQ(e => e.Id, id); Node node = collection.FindOne(query); 最后我得到节点,而不是实际的PlotNodes或EndNodes。 […]

Mongo C#驱动程序:反序列化BsonValue

我在mongodb中有一个文档,结构类似于: { “_id”: “abcdef01234”, “Name”: “Product A”, “Dimensions”: [ { “Height”: 32, “Width”: 64 }, { “Height”: 16, “Width”: 32 }, { “Height”: 8, “Width”: 16 } ] } 我还有一个定义为表示维度的类(上面的子文档) public class Dimension { public int Height { get; set; } public int Width { get; set; } } 我以这种方式选择“产品A”文档: MongoServer srv = MongoServer.Create(myConnStr); BsonDocument […]