MongoDB 无法在聚合管道中创建 UUID 字符串

时间:2021-03-07 09:40:55

标签: mongodb mongodb-query aggregation-framework

目前我在数据库中有如下报告集合(为了清晰起见而简化);

{
    "_id": "33b4c208-4807-4004-ae55-d482266ee790",
    "reportTypeId": "RPT-100",
    "created": "2021-02-23T23:54:28.376+00:00",
    "userId": "cc278c75-9399-451e-a40d-64eb0d14625a",
    "rows": [
        {
            "row_field_1": "x",
            "row_field_2": "y",
            "row_field_3": "z"
        }
    ]
}

但我们决定将报告与行分开,所以我创建了 reportRows 集合。

我编写聚合将报表对象内部的每一行传输到新创建的 reportRows 集合。 但是您已经注意到我在报告行项目中没有任何 _id 字段,因此在插入之前,我想创建一个带有 UUID 字符串值的 _id 字段。

我找到了 UUID 的文档。

https://docs.mongodb.com/manual/reference/method/UUID/

文档说我可以使用 UUID() 函数创建随机 UUID,但是当我使用 $set$addFields 阶段在聚合管道中添加 _id 字段时,MongoDB 给出以下错误。

“MongoshInvalidInputError:缺少必需的参数。”

MongoDB Compass 工具针对同一管道给出以下警告。 “舞台文件格式必须正确”

// $set stage 为行添加(或设置)_id 字段

{
    "$set": {
        "_id": UUID()
    }
}

如何在聚合管道中使用随机 UUID 字符串创建或设置 _id 字段?

谢谢。

0 个答案:

没有答案