使用Java驱动程序时重命名投影中的字段



我想重命名投影中的字段,但当使用Kotlin和MongoDB Java驱动程序时,这不起作用。这可以用Java驱动程序完成吗?

collection
.find()
// field removal works
.projection(
fields(exclude("excludefield1","excludefield2"))
)
// field rename does not work
.projection(new Document("newfieldname","$oldfieldname"))
.forEach...

您可以通过以下聚合轻松完成:

db.collection.aggregate([
{
"$project": {
"newField": "$oldfieldname",
_id: 0 // Optional
}
}
])

游乐场

编辑:

如果您的字段多于要排除的字段,则应使用$project,如下所示:

db.collection.aggregate([
{
"$project": {
"newField": "$oldfieldname",
"includeField": 1 //Fields other than this will be excluded
}
}
])

Playground2

使用聚合框架时,也可以按照以下进行

  1. 使用Projections.computed

project(fields(computed("newname", "$oldname")))

  1. 使用聚合.addFields

addFields(Field("newname", "$oldname"))

最新更新