问题标签 [mongodb.driver]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
3022 浏览

c# - MongoDb.Driver IMongoDatabase.GetCollectionNamesAsync() 异常

MongoDB.Driver我使用 C#库连接到 MongoDB 。一些有效的代码

所以凭据是正确的,我IMongoDatabase的 s 很好,但是,当我尝试检索数据库中的集合时,我得到一个AggregateException,当我这样做时mongoDb.GetCollectionNamesAsync().Result,异常详细信息是

AggregateException InnerException (count 1) MongoQueryException: QueryFailure flag 为真(响应为 { "$err" : "not authorized for query on taurusEvents.system.namespaces", "code" : 13 })。

我不确定这个异常告诉我什么。客户端的身份验证很好,但我似乎可以查询数据库。我在这里想念什么?


编辑。我现在意识到我需要使用凭证来执行此操作,但是,

我现在提供我的身份验证数据库名称的地方authDb也会引发上述相同的内部异常。


编辑#2。我发现如果我这样做

通过明确引用集合名称,它可以工作,我得到我的集合。但是我想要一个可用的集合列表,为什么GetCollectionNamesAsync()不工作?


编辑#3。我使用以下方法创建我的服务器角色:

1. 创建管理员用户:

2. 创建其他用户,例如:

谢谢你的时间。

0 投票
2 回答
5439 浏览

c# - 如何在 C# MongoDB 驱动程序 v2.0 中获取连接状态?

我们开始使用新的MongoDB 驱动程序 v2,我们无法理解我们是否连接到数据库。

我们的存储库代码:

其中wrong-hostwrong-port是无效值。

首先,我们认为如果没有人在指定地址上监听但驱动程序没有抛出异常,则会引发异常。

下一步是在数据库上调用方法:

在这里,我们冻结了 30 秒而不是异常。我们不适合等待 30 秒来了解我们是否连接。

System.TimeoutException:使用 CompositeServerSelector{ Selectors = ReadPreferenceServerSelector{ ReadPreference = { Mode = Primary, TagSets = [] } },LatencyLimitingServerSelector{ AllowedLatencyRange = 00:00:00.0150000 } } 选择服务器 30000 毫秒后发生超时。集群状态的客户端视图是 { ClusterId : "1", Type : "Unknown", State : "Disconnected", Servers : [{ ServerId: "{ ClusterId : 1, EndPoint : "****" }", EndPoint: “****”,状态:“断开连接”,类型:“未知”,HeartbeatException:“MongoDB.Driver.MongoConnectionException:打开与服务器的连接时发生异常。---> System.Net.Sockets.SocketException : 无法连接,因为目标机器主动拒绝 ******

最后我们尝试设置不同的超时,但没有任何改变。

所以问题是我们如何知道我们是否在短时间间隔〜(1-2)秒内连接到mongo?

[更新]

我们目前的解决方案是:

用法

0 投票
0 回答
110 浏览

c# - IAsyncCursor v/s IAsyncCursorSource

在 MongoDB 驱动程序 2.0.1 中使用 ToListAsync() 期间,我观察到了两个不同的文档。

  • IAsyncCursorSourceExtensions
  • IAsyncCursorExtensions

这两者有什么区别。我用于 C# 的 MongoDriver 具有 IAsyncCursorSource。

0 投票
1 回答
3955 浏览

c# - 将 BsonDocument 映射到类但出现错误

这是我从 MongoDb 集合中提取的 BsonDocument。我想将其反序列化(或映射)到我用 C# 制作的对象/类。

这是我想将 BsonDocument 映射/反序列化到的类。我班级中的字段是我唯一要检索的字段。

目前,这就是我尝试执行此操作的方式,但我收到“元素'类型'与 MyType 类的任何字段或属性不匹配”的错误消息。我不想在 MyType 类中包含“类型”字段。

我在最后一行收到错误。在此示例中,我尝试仅对 MyType 对象的一个​​实例的一个文档执行此操作。我还对如何将整个集合反序列化为 MyType 对象或类似对象的列表感兴趣,其中它不仅适用于一个 BsonDocument,而且适用于我的集合中的所有文档。

谢谢你的时间。

0 投票
1 回答
2183 浏览

mongodb - 如何使用 Powershell 进行复杂的查询 MongoDB

我需要使用 Powershell 从 mongoDB 检索数据。假设我有 db.orders 集合,只需要检索上周创建的订单,并且只检索特定列,例如 _id、status、createdAt 字段。

订单集合架构

我可以像这样在 mongo shell 中查询它

但我需要在 Powershell 中执行此操作,这是我的 Powershell 脚本,其中包含简单查询,可准确提取 createdAt 日期.. 不是日期范围

在 MongoDB .NET Driver api 中,我无法进行复杂的查询,或者至少不知道如何进行。我可以根据一个特定的列进行查询,但不能制作复杂的列,并且不能限制某些字段的输出。

请告知是否有人知道如何。注意:它不是 .Net 项目,它只是使用 mongoDB .net 驱动程序,但在 Powershell 中执行。

0 投票
0 回答
1015 浏览

c# - mongodb c# UpdateOneAsync(查询,更新)

我有一个循环。它更新了项目。

对于 10K 项目,我没有更新 1-4。但我没有得到任何错误。如果我连续两次进行更新,那么它将起作用。会是什么呢?MongoDB.Driver 版本="2.0.1"

0 投票
1 回答
7919 浏览

c# - C# mongodb driver 2.2.3 如何为游标设置batchSize

我正在为 MongoDB 2.2.3 使用官方 C# 驱动程序

如何使用 C# 驱动程序设置光标的批量大小?

使用 javascript,我可以创建一个游标并为其设置批量大小:

我可以使用以下语句遍历所有项目:

我希望在具有异步/等待支持的 C# 中具有相同的行为。我知道我可以使用 C# 中的游标,但它的默认批处理大小为 4MB。这太匹配了,无法一次调用返回给客户端。

0 投票
1 回答
220 浏览

c# - Getting "TimeoutException" when trying to retrieve data from MongoDB

I'm using C# to connect to a MongoDB server using the official MongoDB.Driver with version 2.2.24.26

My code looks like this:

It works like charm (it finishes within less than 0.5 seconds) if the connection string is like

As soon as I want to use authentication, I always encounter a timeout.

The operation consuming all the time is the "ToList()". The list in my tests does have 136 entries. Am I missing something?

Edit: Sorry for the wrong topic in the first place. I don't know how a topic from a totally unrelated issue did appear here...

0 投票
3 回答
2673 浏览

mongodb - 使用 mongo-scala-driver 在 Scala 中打印来自 Mongodb 的查询结果

我正在尝试在 Scala 中打印 MongoDB 查询的结果

抛出的错误是:Cannot resolve symbol printResults。建议使用mongo-scala-driverversion的其他一些问题的答案1.2,因为 printResults() 未针对 version1.1及以下版本实现

SBT 文件:

尝试使用手动打印:

导致以下信息:

信息:ReadPreferenceServerSelector{readPreference=primary} 从集群描述 ClusterDescription{type=UNKNOWN, connectionMode=SINGLE, serverDescriptions=[ServerDescription{address=localhost:27017, type=UNKNOWN, state=CONNECTING}]} 中没有选择服务器。在超时前等待 30000 毫秒

有没有办法在控制台中查看检索到的结果?

0 投票
1 回答
1688 浏览

c# - MongoDb.Driver 2.4 反序列化数据类型改变

我有以下 POCO 课程:

该对象存储在 MongoDb 集合中。数据在生成的 bson 中具有正确的数据类型:

当我尝试查询集合时:

我收到一个错误,表明无法反序列化 property2:无法从 BsonType 'Int64' 反序列化 'String'

我正在尝试将数据库中 bson 文档中的字符串值反序列化为对象上的字符串值。

为什么 BsonSerializer 试图将其转换为十进制?在这种情况下,该值恰好是数字,但该字段在类中定义为字符串,因为该值通常是字母数字。

我在 VS2013 中使用 MongoDb.Driver v2.4 包。