首页 > 解决方案 > 如何在 Kotlin/JS 中编写 MongoDB 聚合

问题描述

我正在尝试将 Kotlin JS 与 MongoDB 浏览器 SDK 一起使用。SDK 允许使用 JavaScript 中的函数,例如:

const someData = db("database")
        .collection("stories")
        .aggregate(
                [
                    {
                        $lookup:
                            { from: "person",
                              localField: "person_id",
                              foreignField: "_id",
                              as: "people"
                            }
                    }
                ]
        )

这就是我将其转换为 Kotlin 的方式:

val aggregate = mapOf(
        "\$lookup" to mapOf(
                "from" to "people",
                "localField" to "people_id",
                "foreignField" to "_id",
                "as" to "people"
        )
)
val someData = mongodb
    .db("database")
    .collection("stories")
    .aggregate(aggregate)

但我收到以下错误:Uncaught RangeError: Maximum call stack size exceeded

有任何想法吗?

标签: javascriptmongodbkotlinmongodb-queryaggregation-framework

解决方案


Kotlin/JSmapOf与纯 JavaScript 键值对象不兼容。请改用json函数。

import kotlin.js.json

val aggregate = arrayOf(
    json(
        "\$lookup" to json(
            "from" to "people",
            "localField" to "people_id",
            "foreignField" to "_id",
            "as" to "people"
        )
    )
)

推荐阅读