在SpringBoot中为多个条件命名MongoRepository的查询方法

时间:2019-01-24 11:24:44

标签: spring-boot mongodb-query spring-data-mongodb

根据documentation,我正在尝试为必须满足两个不同条件的Spring MongoRepository方法获取一个工作名称。用简单的话来说,查询听起来像是:“ 通过他的id查找确定的对象,它是我的一个,或者我想共享它

对象:

{
    "_id" : ObjectId("5c497..."),
    "owner" : "myUserId",
    "shared" : false,
}

查询:

db.getCollection('collection').find({$or : [
            { $and : [ { '_id' : ObjectId("5c497...") }, { 'owner' : 'myUserId' } ] },
            { $and : [ { '_id' : ObjectId("5c497...") }, { 'shared' : true } ] }
        ]})

我用@Query

解决了这个问题


@Query("{\$or: [{\$and: [{'_id' : ?0}, {'owner' : ?1}]}, {\$and: [{'_id' : ?0}, {'shared' : true}]} ]}")
fun findIfAvailable(id: ObjectId, owner: String, shared: Boolean = true): Mono<MyObj>


但是现在,我想知道是否可以编写一种方法名称来简化代码(并学习如何使用它)。 我尝试失败了findByIdAndOwnerOrSharedfindByIdAndOwnerOrIdAndShared,等等

谢谢

0 个答案:

没有答案