Именование методов запроса для MongoRepository с несколькими условиями в SpringBoot - PullRequest
0 голосов
/ 24 января 2019

Согласно документации , я пытаюсь получить рабочее имя для метода Spring MongoRepository, который должен удовлетворять двум различным условиям. Проще говоря, запрос звучит так: " ищите определенный объект по его идентификатору, и он один из моих, или я хочу поделиться им "

Объект:

{
    "_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>


Но теперь мне стало интересно, возможно ли написать имя метода для упрощения кода (и узнать, как его использовать). Я безуспешно пытался findByIdAndOwnerOrShared, findByIdAndOwnerOrIdAndShared и т. Д.

Спасибо

...