在 mongo (3.6) shell 中,我可以执行以下聚合来投影并将“_id”重命名为其他名称:
db.collection.aggregate([
{ $group : { _id : ... },
{ $project : { '_id': 0, // exclude the id field
'name' : '$_id', // project the "old" id value to the "name" field
...
}
}
])
Run Code Online (Sandbox Code Playgroud)
我需要使用 spring-data-mongo (通过 Spring Boot 2.3.1)来翻译它。我可以使用以下 ProjectionOperation 排除 id 字段:
project().andExclude("_id")
Run Code Online (Sandbox Code Playgroud)
但到目前为止我还无法重命名 id 字段。以下均无效:
我的第一个猜测
project().and("_id").as("name")
Run Code Online (Sandbox Code Playgroud)
正如这里所建议的
project().andExpression("_id").as("name")
Run Code Online (Sandbox Code Playgroud)
这不应该那么难,但我不知道我错过了什么。
编辑:数据样本和完整的聚合管道以重现故障
并附有以下文件:
{
"_id" : ObjectId("5a0c7a3135587511c9247db4"),
"_class" : "task",
"category" : "green",
"status" : "OK"
}
{
"_id" …Run Code Online (Sandbox Code Playgroud) 我试图通过几个参数找到表格的必要元素
List <Person> findByLastname(String lastname);
Run Code Online (Sandbox Code Playgroud)
但是如果将来添加/删除某些参数怎么办?如何使用Spring Data JPA使一些参数可选,如下所示
List <Person> findByOptionalLastnameAndOptionalFirstNameAnd...(String lastname, String firstname,...);
Run Code Online (Sandbox Code Playgroud)