Mongodb 我可以在mongo db/spring数据中使用查询注释来匹配作为dbref的集合成员吗

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"

我使用的是spring数据,有一个帐户集合,其中有一个用户集合、一个删除标志和其他属性

{
    "_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,就像您为“模块”显示的那样。

谢谢您的回答!很遗憾,我不能接受它,因为我无法访问代码库并验证它,但感谢您的时间。谢谢您的回答!很遗憾,我不能接受它,因为我无法访问代码库并验证它,但感谢您抽出时间。