Mongodb 我可以在mongo db/spring数据中使用查询注释来匹配作为dbref的集合成员吗
我使用的是spring数据,有一个帐户集合,其中有一个用户集合、一个删除标志和其他属性Mongodb 我可以在mongo db/spring数据中使用查询注释来匹配作为dbref的集合成员吗,mongodb,spring-data,Mongodb,Spring Data,我使用的是spring数据,有一个帐户集合,其中有一个用户集合、一个删除标志和其他属性 { "_id" : ObjectId("55f1f6222dcfdf26278d3c0a"), "deleted" : false, "users" : [ DBRef("users", ObjectId("55f4f6222dcfdf26278d3c07")) ], "modules: [ DBRef("modules"
{
"_id" : ObjectId("55f1f6222dcfdf26278d3c0a"),
"deleted" : false,
"users" : [
DBRef("users", ObjectId("55f4f6222dcfdf26278d3c07"))
],
"modules: [
DBRef("modules", ObjectId("55f4f6232dcfdf26278d3c07"))
],
...
}
我希望能够按用户查询帐户。我可以执行派生查询(记录在此处:):
在我的dao类中,它扩展了MongoRepository
一切都很好。但是我真的希望能够添加第二种方法,deleted
默认为false,只提供未删除的帐户。我更喜欢使用注释来实现这一点(而不是使用MongoTemplate
在java中编写查询)
不幸的是
@Query("{deleted:false, 'user.$id' : ?0}")
Account findByUsers(User user);
也没有:
@Query("{deleted:false, 'user' : ?0}")
Account findByUsers(User user);
我认为问题在于Users
是一个集合,或者Users
是一个存储为dbref的对象,或者是一个组合。如果按id字段而不是对象进行搜索,则效果良好:
@Query("{deleted:false, 'modules.$id' : ?0}")
Account findByModules(String id);
有没有办法让用户
取消对id的引用?或者任何其他可以将查询保存在注释中的方法?您可以使用
Account findByUsersAndDeletedIsFalse(User user);
相反。至少在Spring4.3附带的SpringData Mongo中。当然,您可以将方法的调用更改为findByUsers(user.id),并使用@Query,就像您为您可以使用的“模块”显示的那样
Account findByUsersAndDeletedIsFalse(User user);
相反。至少在Spring4.3附带的SpringData Mongo中。当然,您可以将方法的调用更改为findByUsers(user.id),并使用@Query,就像您为“模块”显示的那样。谢谢您的回答!很遗憾,我不能接受它,因为我无法访问代码库并验证它,但感谢您的时间。谢谢您的回答!很遗憾,我不能接受它,因为我无法访问代码库并验证它,但感谢您抽出时间。