Spring Data Mongodb: удалить строку из массива - PullRequest
0 голосов
/ 24 февраля 2020

У меня есть коллекция с именем pub . Каждый документ содержит массив строк с именем коктейлей , так что:

{"id" : "0", "name" : "My Beautiful Pub", "cocktails" : ["B52", "SexOnTheBeach", "Negroni"]}

Используя Spring mongodb, я удалил бы каждый "SexOnTheBeach", так что:

{"id" : "0", "name" : "My Beautiful Pub", "cocktails" : ["B52", "Negroni"]}

... каждый документ паба в моей коллекции "pub" не может содержать "SexOnTheBeach".

Я думаю, что должен использовать метод new Update().pull(), но каждое обновление не изменяет мою базу данных.

Этот запрос mongodb отлично работает, но я не знаю, как его перевести!

db.pub.update(
{ },
{ $pull: {  cocktails: "SexOnTheBeach" } },
{ multi: true })

Ты заранее.

1 Ответ

0 голосов
/ 24 февраля 2020

В вашем @Service классе добавьте:

import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.query.Update;
import org.springframework.data.mongodb.core.query.Query;

@Autowired
private MongoTemplate mongoTemplate;

...

mongoTemplate.updateMulti(new Query(), new Update().pull("cocktails", "SexOnTheBeach"), "pub");
...