Java kullanarak bir diziden bir öğe kaldırmak için çalışıyorum ve başarılı olmamıştır öğeyi kaldırmak Bunu alabilir içeride:mongodb <p></p> Ben bir "emailsInApp" koleksiyonu var ve ... dizinin
{ "_id" : "750afe", "list" : [ "[email protected]", "[email protected]" ] }
{ "_id" : "711850", "list" : [ "[email protected]" ] }
Her bir kimlik için kayıtlı e-postaları tutar.
Yapmak istediğim şudur: bir kimlik ve bir e-posta verildiğinde, bu e-postayı bu uygulamadan kaldırın.
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);
doğru yönde bana lütfen gösterebilir misiniz:
Bu benim atm var ve bunu çalıştırdığınızda hiç de diziyi değiştirmez nedir?
Düzenleme: Ben bu bana seni mi hata ayıklama ise @Constantine kurumlarda tarafından gibi:
DBCollection emailsApp = db.getCollection(EmailsInAppColl);
queryEmail.put("_id", appId);
DBCursor cursor = emailsApp.find(queryEmail);
System.out.println("######*****"+cursor.next());
konsolunda:
#####*****{ "_id" : "711850" , "list" : [ "[email protected]" , "[email protected]" , "[email protected]" , "[email protected]"]}
arama sorgusu doğrudur ama kaldırmaz böyle madde ...
DBCollection parametresinde doğru toplama adına sahip olduğunuzdan emin olun ve appId'nin gerçekten var olup olmadığını kontrol edin. Lütfen, bu şekilde hata ayıklayın ve doğru olup olmadığını söyleyin. – user
Merhaba @Constantine, Cevabınız için teşekkür ederiz. Bir imleç kullanarak test ettim ve kimliği buldu. Bu yüzden uygulamayı buluyor, sorun öğeyi kaldırıyor ... – HeWhoCodes