问题标签 [mongo-scala-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 投票
0 回答
210 浏览

mongodb - 应用聚合时在 Mongo Scala 驱动程序中出现盒装错误

我正在尝试使用 Mongo Scala 驱动程序在 MongoDB 中通过查找应用聚合,当我尝试获取结果时,我得到了盒装错误。

我得到的错误,

我正在为驱动程序使用以下依赖项,

我注意到的问题,每当我尝试使用 toFuture 获取结果,以便将 Observable[T] 转换为 Seq[JsValue] 时,我都会收到错误消息。

0 投票
1 回答
187 浏览

mongodb - collection.insertOne(doc).results() 方法不可用

我正在使用 Scala、Mongo DB 和 mongo-scala 驱动程序简单示例将数据插入 Mongo。

在最后一步中results()找不到该方法,但他们在文档中给出了它。

0 投票
0 回答
48 浏览

mongodb - 如何限制 mongo-spark-connector 与 mongo 集群的连接过多?

我使用 mongo-spark-connector 在 spark 中构建了一个简单的数据导出器作业。该作业从 mongo 读取集合并将其写入 S3。但是,对于大型集合(2B 文档),无论执行器和执行器核心的数量如何,它都会打开太多的连接。我尝试检查他们的官方文档以查找是否有连接器配置来限制连接数。但他们也没有。有没有办法可以控制从我的 spark 应用程序产生的连接数?

0 投票
0 回答
156 浏览

mongodb - 为嵌套案例类自动创建 mongo 编解码器

我想为嵌套的案例类自动创建 mongo 编解码器,这些案例类很大并且有很多层次的组合。

举个简单的例子,假设我想为以下类创建编解码器:

使用 createCodecProvider 时:

我收到错误:

以下方法确实有效:

但是,当然,对于大型案例类,这将很难编写和维护。

0 投票
1 回答
152 浏览

mongodb - Scala MongoDB 驱动程序的磁铁模式

该文档描述了使用磁铁模式来隐式转换为 BSON 类型。请参阅此页面http://mongodb.github.io/mongo-java-driver/4.1/driver-scala/bson/scala-documents/。我尝试定义一个扩展 BsonTransformer 的隐式对象,但它找不到该类型的编解码器。我错过了什么/有人让这个工作吗?下面的示例代码,假设正在调用 insert 方法。

错误 - org.bson.codecs.configuration.CodecConfigurationException:找不到类 com.bla.BlaClass$CustomType 的编解码器。

*请注意,我知道这可以通过

但我只是用这个例子来要求学习一个更混乱的情况下的磁铁图案。

0 投票
0 回答
64 浏览

mongodb - 通过具有顺序磁盘访问的 spark mongo 连接器读取完整集合?

我想在磁盘 I/O 方面尽可能高效地使用 Mongo Spark 连接器(Scala API)将完整的 MongoDB 集合读入 Spark。

在阅读了连接器文档和代码之后,我了解到分区器都是为了计算索引字段的最小和最大边界而设计的。我的理解是(以及我使用explainshow 进行的测试)每个游标都会扫描索引以查找计算边界内的文档键,然后获取相应的文档。

我担心这种索引扫描方法会导致随机磁盘读取,最终导致更多的 I/Ops 是必要的。在我的情况下,问题更加突出,因为集合大于可用 RAM(我知道不建议这样做)。当文档存储在磁盘上时,使用自然顺序游标读取文档不是要快几个数量级吗?我怎样才能做到这一点?

0 投票
2 回答
142 浏览

json - 如何在 Scala 中将 Scala 文档转换为 JSON

我想在以下代码中将message类型scala.Seq[Scala.Document]为 JSON 格式的变量转换为:

但它在完成(消息)行上给了我错误。它不接受该类型的消息。

我尝试使用以下方法将其转换为 JSON:

但它不起作用。

我的Chat.scala课程如下:

我也无法弄清楚在unapply方法中要写什么。我是 scala 和 akka 的新手。

编辑: 我的MongoDatabase.scala集合如下:

如果尝试改变 val collectionForChat: MongoCollection[Document] = database.getCollection(chatCollection)

val collectionForChat: MongoCollection[Chat] = database.getCollection[Chat](chatCollection)

然后我在下面的saveChatMessage()方法中出现错误:

val chatAddedFuture = MongoDatabase.collectionForChat.insertOne(senderToReceiverMessage).toFuture()这条线上,因为它接受Seq[Document]类型的数据,我正在尝试添加Seq[Chat]类型的数据

0 投票
1 回答
45 浏览

mongodb - Mongo 批量替换为 200k+ 操作

例如,我在集合中有这样的文件:

我需要通过修改或删除values列以及其中key&time是过滤器来更新来自 CSV 文件的集合。

到目前为止我已经尝试过:

  • DeleteMany(带有or(and(key: key1), and(time: time2)), ... 276k 更多or参数)+ InsertMany 带有 276k 文档 => ~ 90 秒
  • filter: and(key: key1, time: time2)使用 ( ) => ~ 40 秒批量替换一个
  • 将大批量拆分为几个较小的批次(7500 似乎是性能最高的),但这一个在数据库操作方面不是原子的 => ~ 35 秒

笔记:

  • 所有测试都是bulk.ordered = false为了提高性能。
  • 有唯一索引key: 1, time: -1

有没有可能优化这种请求?我知道 Mongo 可以爆发到 ~80k 插入/秒,但是替换呢?

0 投票
1 回答
153 浏览

mongodb - Scala MongoDB 聚合组和匹配查询

我想要一个从每个文档中获取最新版本的查询,并检查某个给定的字符串 ( applicationId) 是否在列表中allowedApplications

文档示例:

所以 MongoDB 查询是:

查询将输出名称和版本(我稍后可能会添加allowedApplications)。

我现在正在尝试在 Scala 的 mongodb 驱动程序中编写它。

我尝试了很多东西,例如:

但无法让它工作。

使用 Scala 2.13.1 和 mongo-scala-driver 4.1.0。任何帮助,将不胜感激。

0 投票
1 回答
127 浏览

mongodb - Scala MongoDB groupby 多个字段

我正在尝试在 MongoDB Scala 驱动程序中使用以下(示例)查询:

基本上我要翻译的主要是:

但无法让它工作。

我尝试了多种东西但没有任何成功。

使用 Scala 2.13.1 和 mongo-scala-driver 4.1.0。任何帮助,将不胜感激。