#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. Я думаю, что достаточно просто
"
заменить"
ваш запрос и окружить его кавычками. Не так ли?