2013-06-12 17 views
6

próbuję usunąć element z tablicy przy użyciu języka Java i nie były udane ...MongoDB usunąć element z tablicy

Mam „emailsInApp” zbieranie i wewnątrz mam to:

{ "_id" : "750afe", "list" : [ "[email protected]", "[email protected]" ] } 
{ "_id" : "711850", "list" : [ "[email protected]" ] } 

Zawiera dla każdego identyfikatora zarejestrowane wiadomości e-mail.

Co chcę zrobić: podać identyfikator i wiadomość e-mail, usunąć tę wiadomość z tego appId.

To co mam atm i gdy uruchomię go to w ogóle nie zmieniać tablicę:

DBCollection emailsApp = db.getCollection(EmailsInAppColl); 
BasicDBObject queryEmail = new BasicDBObject(); 
queryEmail.put("_id", appId); 
BasicDBObject updateEmailCommand = new BasicDBObject(); 
updateEmailCommand.put("$pull", new BasicDBObject("list", email)); 
emailsApp.update(queryEmail, updateEmailCommand, true, true); 

Czy możesz wskazać mi w dobrym kierunku, proszę?

Edit: Jak poleciła przez @Constantine jeśli debugować to jest to, co mam:

DBCollection emailsApp = db.getCollection(EmailsInAppColl); 
queryEmail.put("_id", appId); 
DBCursor cursor = emailsApp.find(queryEmail); 
System.out.println("######*****"+cursor.next()); 

W konsoli:

#####*****{ "_id" : "711850" , "list" : [ "[email protected]" , "[email protected]" , "[email protected]" , "[email protected]"]} 

wyszukiwane hasło jest poprawne, ale nie usuwa element ...

+0

Upewnij się, że masz poprawną nazwę kolekcji w parametrze DBCollection i sprawdź, czy plik appId rzeczywiście istnieje. Proszę, debuguj go w ten sposób i powiedz, czy wszystko jest w porządku. – user

+0

Hi @Constantine, Dziękuję za odpowiedź. Zrobiłem to za pomocą kursora i znalazłem identyfikator. To jest znalezienie aplikacji, problem polega na usunięciu elementu ... – HeWhoCodes

Odpowiedz

7

Spróbuj czegoś, tak:

BasicDBObject match = new BasicDBObject("_id", appId); //to match your direct app document 
BasicDBObject update = new BasicDBObject("list", email); 
coll.update(match, new BasicDBObject("$pull", update)); 

To powinno działać.

+0

Bardzo dziękuję za pomoc @Constantine. Zdarza się, że myślałem źle, zmieniłem tablicę, by mieć identyfikator powiązany z każdą wiadomością e-mail. Stamtąd łatwiej jest mi utrzymać tablicę i rozwiązać problem. Pomóż mi znaleźć właściwą drogę :) – HeWhoCodes

+0

Nie ma za co! – user

Powiązane problemy