Tag: mongodb

使用MongoDB C#驱动程序在Aggregation Framework中使用allowDiskUse

我想允许DiskUse:true。 但是,我找不到任何解释allowDiskUse启用MongoDB C#驱动程序的示例。 如何在MongoDB C#驱动程序中启用allowDiskUse? 我的示例代码就是这样 var pipeline = new[] { match, project, group, limit, sort, allow }; List result = db .GetCollection(“TwitterStatus”) .Aggregate(pipeline).ResultDocuments.Select(x => new User { Influence = Convert.ToDouble(x[“Influence”]), User = new SMBUser((BsonDocument)x[“User”]) }).ToList();

无法通过C#客户端连接到MongoDB(MongoLabs)

问题背景: 我在MongoLabs(mLab – https://mlab.com/ )中设置了一个数据库并添加了一个非常简单的Collection。 我正在使用MongoDB驱动程序尝试通过C#3.2驱动程序连接和使用此集合。 问题: 我无法通过C#驱动程序连接到我的数据库,并且持续进行身份validation,如下所示: System.TimeoutException:使用CompositeServerSelector选择服务器30000ms后出现超时{Selectors = ReadPreferenceServerSelector {ReadPreference = {Mode = Primary,TagSets = []}},LatencyLimitingServerSelector {AllowedLatencyRange = 00:00:00.0150000}}。 群集状态的客户端视图是{ClusterId:“1”,ConnectionMode:“Automatic”,类型:“Unknown”,状态:“Disconnected”,服务器:[{ServerId:“{ClusterId:1,EndPoint:”Unspecified / ds048719。 mlab.com:48719“}”,EndPoint:“未指定/ ds048719.mlab.com:48719”,状态:“已断开连接”,类型:“未知”,HeartbeatException:“MongoDB.Driver.MongoConnectionException:打开时发生exception连接到服务器.—. MongoDB.Driver.MongoAuthenticationException:无法使用sasl协议机制SCRAM-SHA-1进行身份validation.—> MongoDB.Driver.MongoCommandException:命令saslStart失败:身份validation失败。 代码: 我尝试了许多尝试validation请求的不同方法。 目前我正在尝试简单地使用MongoClient类,如下所示: MongoClient client; var connectionString = “mongodb://userNameGoesHereRemovedForSO:passwordGoesHereRemovedForSO@ds048555.mlab.com:48719/db”; client = new MongoClient(connectionString); var database = client.GetDatabase(“testDB”); var collection = database.GetCollection(“test”); 任何有关如何成功克服此身份validation问题的帮助或示例都将受到高度赞赏。

如何在Upserting到MongoDB时阻止“_t”字段出现?

我有一个应用程序,使用MongoDB的c#驱动程序将Upserts转换为MongoDB数据库。 当我调用Update函数时,我无法指定我想要更新的类型,然后插入一个带有元素类型的_t字段。 这是我用来upsert的代码: collection.Update( Query.EQ(“key”, item.Key), Update.Replace(item), UpdateFlags.Upsert ); 这是结果: 当我执行初始插入时,这不会发生,因为我可以指定类型。 如何在不插入_t字段的情况下制作Upserts? [编辑]那是我用来插入的代码: collection.InsertBatch(ItemType, items);

使用MongoDB时如何按惯例应用BsonRepresentation属性

我正在尝试将[BsonRepresentation(BsonType.ObjectId)]应用于表示为字符串的所有id,而不得不用属性装饰我的所有id。 我尝试添加StringObjectIdIdGeneratorConvention但似乎没有对它进行排序。 有任何想法吗?

超时等待MongoConnection

为什么从MongoDB服务器获取对象时,Mongo C#驱动程序会发生以下exception? “超时等待MongoConnection。” 有没有办法在某处设置此连接超时或修复此问题?

使用MongoDB的官方C#驱动程序进行按位枚举(标志)查询

当我尝试运行表单的LINQ查询时: MongoCollection collection; collection.AsQueryable().Where(entity => (entity.Flags & MyFlags.AFlag) != MyFlags.None); 我得到一个带有消息Unsupported where clause: ((Int32)((Int32)entity.Flags & 4) != 0).的ArgumentException Unsupported where clause: ((Int32)((Int32)entity.Flags & 4) != 0). 这是一个已知的错误/function吗? 有没有解决方法? 从文档中可以看出,MongoDB有一个按位更新,但不是按位查询。 为了进行比较,使用ServiceStack作为客户端,相同的查询在Redis上方顺利运行。 我确实找到了建议使用JavaScript的这两个链接( link1 , link2 ),这将使服务层的实现非常依赖于DB技术。

MongoDb SafeMode与WriteConcern进行比较

谁能说如何用WriteConcern替换过时的SafeMode ? 特别是我对SafeMode.True感兴趣? 谢谢。

无法解析程序集或Windows元数据文件’System.Data.dll’

我刚刚在c#/ XML中创建了一个新的windows 8应用程序,并下载了mongodb c#驱动程序并在我的项目中添加了它的引用,并按照教程的其余部分进行了操作,但是当我尝试运行我的应用程序时 Cannot resolve Assembly or Windows Metadata file ‘System.Data.dll’ Type universe cannot resolve assembly: System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089. 请提前帮助我。

在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中数组子文档中包含的数组子文档中的字段? 但它仅适用于旧版本的驱动程序。