Tag: mongodb .net driver

如何使用MongoDB的官方C#驱动程序删除’ID’中的’文档’?

有人可以告诉我,如果有更好的方法从使用官方C#驱动程序删除MongoDB中的一个document ,而不是我在下面 – var query = Query.EQ(“_id”, a.Id); database.GetCollection(“Animal”).Remove(query); 这段代码有效,但对我来说似乎太过分了 。 例如,“保存”命令需要一个实例并对其进行更新。 我想要类似的东西 – Remove(item) 。 备注:我正在尝试使用C#的官方驱动程序,而不是看起来过时的NoRM或Samus 。

带有C#驱动程序2.0的MongoDB(服务器v 2.6.7):如何从InsertOneAsync获取结果

我正在使用C#驱动程序2.0测试MongoDB(服务器v 2.6.7)。 当我使用插入函数InsertOneAsync存在一个存在_id的文档时,我期待一个像你从Mongo shell获得的错误: WriteResult({ “nInserted” : 0, “writeError” : { “code” : 11000, “errmsg” : “insertDocument :: caused by :: 11000 E11000 duplicate key error index: mydb.Commands.$_id_ dup key: { : 0.0 }” }}) 但问题是带有C#驱动程序的插入不会抛出exception,我找不到插入的WriteResult 。 当我查看数据库时,似乎什么都没发生。 所以我的问题是插入现有的_id时会对InsertOneAsync什么期望? Visual Studio中的代码: IMongoCollection commandsCollection = db.GetCollection(“Commands”); var bson = new BsonDocument { {“_id”, i.Value}, {“label”, i.Key} […]

使用’ObjectId’查询MongoDB

我已经将document插入MongoDB而没有id 。 我想通过搜索默认分配的MongoDB ObjectId来检索它们。 这是我的尝试 – var query_id = Query.EQ(“_id”, “50ed4e7d5baffd13a44d0153”); var entity = dbCollection.FindOne(query_id); return entity.ToString(); 我得到以下错误 – 发生了’System.NullReferenceException’类型的第一次机会exception 问题是什么?

将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 );

MongoDB引用的最佳实践

我想知道使用引用进行建模的最佳实践是什么情况。 我正在使用MongoRepository库。 public class User : Entity { publis string Id { get; set; } public string Email { get; set; } public string Password { get; set; } } public class Post : Entity { public string Id { get; set; } public string Title { get; set; } public string Summary { get; […]

我可以使用mongodb c#驱动程序进行文本查询

有没有办法将shell查询语法中表达的查询提交给mongo c#驱动程序 比如说像 Coll.find { “myrecs”,”$query : { x : 3, y : “abc” }, $orderby : { x : 1 } } “); 以shell指南为例

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

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

如何在MongoDB中的FindOne中使用SetField用于C#驱动程序

我使用mongodb的官方C#驱动程序,我想使用像Find这样的FindOne查询中的SetFields。 var query = Query.EQ(“Name”, name); Users.Find(query).SetFields(Fields.Exclude(“Password”)); 是否可以这样做,因为FindOne返回一个实际的类而不是mongodb游标。

使用官方C#驱动程序在Mongo DB中进行升级

在mongodb的官方文档中,他们提到了upserts,所以编写一个upsert命令而不是: if (_campaignRepo.Exists(camp)) { _campaignRepo.DeleteByIdAndSystemId(camp); } _campaignRepo.Save(camp); 如果可能的话,可以在db级别实现该逻辑的东西。 那么如果有一个upsert的方法是什么?