问题标签 [kmongo]

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 回答
61 浏览

mongodb - 对对象进行分组,然后使用单个查询对这些组进行排序

我需要实现一个 mongo 查询,该查询形成 2 个组,具体取决于是否avatarUrl为非 null,然后按 . 对这些组进行排序lastName

以下是该系列的外观:

我需要这个查询来返回以下列表:

如您所见,它分为两组,每组按字母顺序排序。

有没有办法使用单个 mongo 查询来做到这一点?

我尝试使用这个:

但这显然行不通。

0 投票
1 回答
159 浏览

mongodb - mongodb查询:有条件查找的结果

我正在尝试在 MongoDB 中进行条件查找。给定一个包含以下字段的集合:

我想根据是否为 ​​来查找所有项目unconsumed,具体取决于snooze应有条件地评估的 expiryT,如下所示:

我使用 KMongo 来查询集合,但使用以下查询

我收到此错误:

com.mongodb.MongoQueryException: Query failed with error code 16020 and error message 'Expression $lt takes exactly 2 arguments. 1 were passed in.' on server localhost:27017

知道查询有什么问题吗?谢谢 :-)

0 投票
1 回答
1656 浏览

mongodb - 如何使用 Micronaut 和 Kotlin + KMongo 为 MongoDB 配置对象映射?

我在使用 Kotlin 在 Micronaut 中为 MongoDB 配置对象映射时遇到了一些困难。我收到如下错误:

解码为“资产”失败,但出现以下异常:

找不到“资产”的公共构造函数。

可能需要显式配置和注册自定义 Codec 或 PojoCodec 以处理此类型。org.bson.codecs.configuration.CodecConfigurationException:使用 AutomaticPojoCodec 解码时发生异常。解码为“资产”失败,但出现以下异常:

找不到“资产”的公共构造函数。

可能需要显式配置和注册自定义 Codec 或 PojoCodec 以处理此类型。

使用 KMongo,这很容易。但是 Micronaut 注入的 MongoClient 没有 KMongo 的编解码器注册表。

我可以让它工作如下:

此代码直接取自 KMongo。(顺便说一句,使用database.withKMongo()导致相同的错误)

虽然这可行,但我想让 Micronaut 使用 KMongo 创建客户端,或者让它使用上面的编解码器,使用配置(application.yml)。

codec-registry这里提到了一个设置: https ://micronaut-projects.github.io/micronaut-mongodb/latest/guide/configurationreference.html ,但我不知道在该设置中输入什么才能使其工作。

任何帮助表示赞赏!

0 投票
1 回答
987 浏览

mongodb - Kmongo (Kotlin Server + Mongo) 的 Ktor 服务器配置问题

我将 Ktor 与 KMongo 一起使用。当我在 localhost 中启动服务器并发出简单的“获取”请求时遇到问题。参考资料不是很清楚和完整 - https://litote.org/kmongo/ - 关于服务器上数据库的配置。有谁知道如何解决这个问题?我认为这是一个简单的配置问题,但我不知道如何解决它。我没有使用弹簧。

这是连接到 KmongoDB 的代码:

创建客户端实例时发生错误:

val client = KMongo.createClient().coroutine

这是堆栈错误:

0 投票
1 回答
306 浏览

mongodb - KMongo 是否支持枚举?

我有一个 mongo 集合,其中有一个名为role. 特别是该字段将始终填充以下三个选项之一useradminguest

这就是我决定创建枚举的原因,以便开发人员更容易使用它,同时将字符串值保留在数据库中。

我试图从我的集合中检索一个文档,期望 KMongo 能够从 String 解析到 Enum Role,反之亦然。

可悲的是,KMongo 似乎无法做到这一点。

当我尝试通过它查找文档时,_id我收到了以下消息:

2019-05-21 11:39:01 [http-nio-8080-exec-1] 错误 cppcSpringWebConfig$simpleMappingExceptionResolver$resolver$1 - Excepción general resolviendo una petición com.fasterxml.jackson.module.kotlin.MissingKotlinParameterException: 实例化 [simple type, class com.foo.user.User] JSON 属性角色的值失败,因为缺少(因此为 NULL)创建者参数角色的值,该角色是 [来源:de.undercouch.bson4jackson.io.LittleEndianInputStream@ 3195529c; pos: 275] (通过引用链: com.foo.user.User["Role"])

所以我的问题是:KMongo 是否支持这些术语中的枚举?

0 投票
1 回答
74 浏览

mongodb - 使用 KMongo 严格解析成 POJO

当我find在我的集​​合中记录并将它们解析为 POJO 时,我希望看到异常,如果 MongoDB 中有其他可用的键,则与我的 POJO 不对应。找不到配置它的方法。

我所做的

如果结果文档是

我得到什么:

我想看到一个例外

有谁知道这是怎么做到的吗?

0 投票
2 回答
195 浏览

kotlin - Mongo 和 Kotlin 的委托问题

我最近一直在使用Kmongo 库和 Kotlin,但是我在 Kmongo 上提出了一个问题,但我不确定它是否与库有关。

我正在尝试将我的数据保存到我的 mongo 数据库(版本 4.2.2)

当我插入数据时,我只发送了一个这样的对象:val person = Person("John", "Doe") 但是当我检查我的 mongo 数据库时

如何防止fullName保存在我的数据库中?

编辑:

我试图@Transient在我的变量上使用注释,但它不起作用,并且我收到一条检查消息说:Property does not have backing field which makes it non-serializable and therefore @Transient is redundant

0 投票
1 回答
715 浏览

kotlin - Ktor 与 Kmongo 和 kotlinx.serialization

我有一个设置,我将 KTor 与 KMongo 和 Kotlinx.Serialization 一起使用。

Kmongo 部分有效,我可以获取并放置我的类

进入数据库并检索它。这一切都完美无缺。

但是,当我尝试通过休息调用将该对象发送到前端时,再次使用 Kotlinx.Serialization。

它抛出了这个期望:

现在我发现这是因为 kotlin.serialization json 有 2 个实例。并且 KMongo 上的一个不与另一个共享它的序列化程序。

所以我将 KMongo 的序列化程序添加到 Ktor 的另一个实例中

现在我得到了

所以我的问题是它为什么会发生以及如何解决它?

0 投票
1 回答
169 浏览

mongodb - KMongo 查询从 Mongo Shell 产生不同的结果

我目前正在使用 KMongo,它非常好。简单易用,语法优美等。

但是我在查询一些我无法弄清楚的数据时遇到了一个问题。我正在过滤某些字段,当我运行我的查询Mongo Shell或者robo 3T它工作正常时。然而,当我尝试在我的 Kotlin 应用程序上运行时,它(仅在某些情况下)不起作用。我这样查询:

但我也尝试用接收过滤值的本机查询编写一个字符串,我遇到了同样的问题。一个具体的例子是这个查询:

{ 'role': 'VENDOR', 'name': 'Internal Revenue Service'}

如果我这样运行robo 3T

我收到了我期望的结果,但是如果我使用 KMongo 运行完全相同的查询(并且我用调试器检查了两倍),我没有收到任何结果:

当我使用正则表达式进行查询时(如在第一个示例中),它似乎只返回小值:如果我用'Internal Revenue Service'它查询名称不会产生任何结果,但如果我只'Internal'用结果查询是正确的。

有谁知道它可能是什么?这似乎非常简单,但我无法弄清楚这让我很生气。

0 投票
1 回答
164 浏览

mongodb - MongoDB - 无法调用 ClusterDescription.getConnectionMode(),因为 clusterDescription 为空

我正在尝试使用 Ktor 和 KMongo 实现一个 RESTful api。我连接了一个 mongoDB Atlas 数据库,它运行良好。

然后我准备在 Heroku 上部署第一个版本的 api,现在当我在本地运行它时,对数据库的每个查询都会抛出这个异常:

我以这种方式连接数据库:

我的 Gradle 文件:

这是 ApplicationKt.kt:

这些是路线:

这是我第一次使用 MongoDB,所以这可能是一个愚蠢的错误。但是无法理解问题是在我的代码中还是在 MongoDB Atlas 配置中。