如何解决Spring Boot MongoDB 查找不适用于 ObjectId
我有 user
集合,其中包含具有 roleId 的角色对象。我也有 roles
集合,它有 id。
现在,对于每个角色,我想获取用户列表。
例如:
[
{
"name": "Scott","role": {
"roleId": "123432"
}
},{
"name": "John",{
"name": "Scott","role": {
"roleId": "556432"
}
}
]
角色数据:
[
{
"id": "123432"
"name": "admin","type": "internal"
},{
"id": "556432"
"name": "owner","type": "external"
},"type": "internal"
}
]
现在我想获取所有类型为 internal
的角色及其相关用户:
所以,输出应该是,
[
{
"role": "123432","users": [
{
"name": "Scott","role": {
"roleId": "123432"
}
},{
"name": "John","role": {
"roleId": "123432"
}
}
],{
"role": "556432","users": []
}
}
]
这是我在 SpringBoort 中的聚合:
LookupOperation lookupOperation = LookupOperation.newLookup().from("roles").localField("roleId")
.foreignField("_id").as("roles");
Aggregationoperation match = Aggregation.match(Criteria.where("type").is("internal"));
Aggregation aggregation = Aggregation.newAggregation(lookupOperation,match);
List<UserDTO> results = mongoTemplate.aggregate(aggregation,"users",UserDTO.class).getMappedResults();
当 roleId 为 ObjectId(Ex: ObjectId("556432")) 形式时,这很有效。但是如果它在字符串中就不起作用(例如:“556432”)。
有人可以帮我吗?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。