Согласно документации , я пытаюсь получить рабочее имя для метода 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
и т. Д.
Спасибо