使用Java驱动程序通过聚合管道更新Mongo DB

时间:2020-02-27 14:25:55

标签: java mongodb kotlin aggregation-framework

Mongo DB允许在更新操作中使用聚合管道。 https://docs.mongodb.com/manual/tutorial/update-documents-with-aggregation-pipeline/

我想使用Kotlin / Java驱动程序来实现。我目前的情况是想将文档中的date属性更改为字符串。不确定是否可以这样做,我在Java Driver文档中看不到任何文档(ofc下面的代码不起作用,这只是草稿):

    fun changeProductLaunchDate(db: MongoDatabase) {
    db.getCollection("productLine").updateMany(
        and(
            ne("products", null),
            or(
                type("products.launchDate", BsonType.DATE_TIME),
            )
        ),
            set(
                "products.launchDate", Document(
                    "$dateToString", mapOf(
                        "date" to "\$products.launchDate",
                        "format" to "%d-%m-%Y",
                        "timezone" to "GMT",
                        "onNull" to null
                    )
                )
            )
    )
}

有人有经验吗?任何建议都会有所帮助。

1 个答案:

答案 0 :(得分:0)

这有效

        db.getCollection("groupProductLine").updateMany(
        and(
            ne("products", null),
            or(
                type("products.launchDate", BsonType.DATE_TIME)
            )
        ),
        listOf(
            set(
                "products.lLaunchDate",
                Document(
                    "\$dateToString",
                    Document("date", "\$products.launchDate")
                        .append("format", "%d-%m-%Y")
                        .append("timezone", "+02:00")
                        .append("onNull", null)
                )
            )
        )
    )