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
)
)
)
)
}
有人有经验吗?任何建议都会有所帮助。
答案 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)
)
)
)
)