Самый быстрый способ избежать строки запроса MongoDB?

#mongodb #spring-boot #mongodb-query #nosql #escaping

Вопрос:

Я новичок в Монго. Играл с MQL, компасом и какой-то фиктивной коллекцией.

Теперь у меня есть простое приложение для загрузки Spring, которое я успешно подключил к базе данных.

Я решил не использовать поддержку данных Spring для запросов Mongo, скорее, я хочу писать свои собственные «родные» запросы и хотел бы использовать @Query для размещения самой строки запроса. Приведенный ниже запрос работает, как и ожидалось, в Compass, но у меня возникли проблемы с экранированием двойных кавычек и других символов, которые необходимо экранировать. Вот запрос, взятый непосредственно из командной строки Compass:

 db.offer.aggregate([
{"$match": {"_id": ObjectId("614513461af3bf569fdc420e")}},
{
  "$project": {
  "_id": 0,
  "qty": {$last: "$instock.qty"}
  }
}
])
 

Вывод:

 { qty: 35 }
 

Чего я хочу достичь, так это чего-то подобного:

 @Repository
public interface OfferRepository extends MongoRepository<Offer, String> {

    List<Offer> findByItemId(String itemId); //works

    //other queries here


    @Query({"$match": {"_id": ObjectId(?1)}},
            {
            "$project": {
            "_id": 0,
            "qty": {$last: "$instock.qty"}
            }
            }
            ])") //obviously, everything has red squiggly lines...  
    Object testQuery(String id);
}
 

Поэтому мой вопрос в том, есть ли какой-то плагин для InteliJ, VS Code, Sublime и т. Д., Который выполнит эту операцию «побега» вместо того , чтобы я пытался выяснить, где каждый ' " , и \ нужно разместить?

Примечание: это напоминает мне, когда мы писали сервлеты и возвращали целые тела html как часть ответа flushed, экранированного, как описано выше. Это был кошмар, к счастью, это было в школе. Это для клиента 🙂

Комментарии:

1. Я думаю, что достаточно просто " заменить " ваш запрос и окружить его кавычками. Не так ли?