Mon go Обновления БД с конвейером агрегации с драйвером Java - PullRequest
0 голосов
/ 27 февраля 2020

Пн go БД позволяет использовать агрегационные конвейеры в операциях обновления. https://docs.mongodb.com/manual/tutorial/update-documents-with-aggregation-pipeline/

Я бы хотел добиться этого, используя драйвер Kotlin / Java. В текущей ситуации я хотел бы изменить свойство даты в документе на строку. Не уверен, что это возможно, я не вижу никакой документации для этого в Java Driver do c (из c приведенный ниже код не работает, это всего лишь черновик):

    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 голосов
/ 28 февраля 2020

Это сработало

        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)
                )
            )
        )
    )
...