如何使用 spring-data-mongodb 编写以下 mongo db 查询?
db.getCollection('assignment').updateMany(
{},
[
{
$set: {
'students': {
$map: {
input: '$students',
as: "ss",
in: "$$ss._id"
}
}
}
}
]
)
这是数据模型的样子:
{
assignmentId: JUUID
students: [ {_id: JUUID, name: String} ]
}
我想将此迁移到以下架构
{
assignmentId: JUUID
students: [JUUID]
}
这是我尝试过的,但它获取了内存中的所有数据并且我得到了 OOMException。有没有更好的方法来编写这个查询,类似于updateMany
我不需要在内存中获取数据的地方。
mongoTemplate.find(Query(), Map::class.java, "assignment").forEach {
val studentIds = ((it.get("students")) as List<Map<*, *>>).map { s -> s.get("_id") } as List<UUID>
mongoTemplate.updateFirst(
Query().addCriteria(Criteria.where("_id").`is`(it.get("_id"))),
Update().set("students", studentIds),
"assignment"
)
}
提前致谢!