【发布时间】:2023-02-07 11:25:19
【问题描述】:
大家好,我收集了如下文件。我想直接从角色数组中获取参数的“权限”:_id、groups._id、roles._id 使用 java mongo 驱动程序。
{
"_id": 1000002,
"groups": [
{
"_id": 1,
"roles": [
{
"rights": 3,
"_id": 1
},
{
"rights": 7,
"_id": 2
},
{
"rights": 3,
"_id": 3
}
]
}
],
"timestamp": {
"$date": {
"$numberLong": "1675267318028"
}
},
"users": [
{
"accessProviderId": 1,
"rights": 1,
"_id": 4
},
{
"accessProviderId": 1,
"rights": 3,
"_id": 5
}
]
}
我有代表该文档的 AccessListItem 类,我使用 Bson 过滤器从 mongo 获取它,但是在获取之后我必须通过 java 函数获取信息。我想直接从 mongo base 获取 int 值。
Bson fileFilter = Filters.eq("_id", itemId);
Bson groupFilter = Filters.elemMatch("groups", Document.parse("{_id:"+groupId+"}"));
Bson roleFilter = Filters.elemMatch("groups.roles", Document.parse("{_id:"+role+"}"));
Bson finalFilter = Filters.and(fileFilter, Filters.and(groupFilter,roleFilter));
MongoCollection<AccessListItem> accessListItemMongoCollection = MongoUtils.getAccessCollection(type);
AccessListItem accessListItem = accessListItemMongoCollection.find(finalFilter).first();
【问题讨论】:
标签: java mongodb mongoose spring-data-mongodb mongodb-java