我正在Spring Web中使用Mongodb。 并使用MongoRepository进行CRUD
我有: 集合:用户
后来,我不得不创建一个组。 因为我不应该也不能将用户嵌入到组中。我创建新集合作为SQL名称:GroupUser。在这里,我使用:
@Field("groupId")
private String groupId;
@DBRef
private User user;
这将有助于查询组中的列表用户(查询数据并自动获取用户的内容)
但是我想获取列表用户ID。通常,在SQL中,我们可以这样做:
select user.id from GroupUser where groupId = ?1
所以我发现我们可以减少并仅获得选择字段,例如
@Query(value = "{ 'groupId' : ?0 }", fields = "{ '_id': 0, 'user.$id':1 }")
List<String> findAllUserIdByGroupId(String groupId);
但结果是JSON之类的
{Object :{ User: {$id: "ObjectID in Hexa"} } }
〜>因此,如果我想获取ObjectId的列表,则必须制作一个映射或for循环将其转换。 〜>一点都不好
所以我尝试找出更多解决方案:
这个question给了我一个创建新退货模型的想法。
db.getCollection('groupuser').aggregate([ { $project : { _id:0 , "newId" : "$user" }} ])
此newID可以链接到$user
,但是如果我将其更改为获取UserId $user.$id
〜>这将导致错误。
因此,仅在mongo命令中,我无法获得SQL想要的功能。
请为此提供其他解决方案。