Javaを使用して配列から要素を削除しようとしていますが、成功していません...
「emailsInApp」コレクションがあり、内部には次のものがあります。
{ "_id" : "750afe", "list" : [ "John@gmail.com", "Mike@gmail.com" ] }
{ "_id" : "711850", "list" : [ "example@gmail.com" ] }
登録された電子メールの ID ごとに保持されます。
私がやりたいことは、ID と電子メールを指定して、その appId からその電子メールを削除することです。
これは私が持っているatmであり、実行しても配列はまったく変更されません:
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);
正しい方向に向けてください。
編集:@Constantineが推奨するように、デバッグすると次のようになります:
DBCollection emailsApp = db.getCollection(EmailsInAppColl);
queryEmail.put("_id", appId);
DBCursor cursor = emailsApp.find(queryEmail);
System.out.println("######*****"+cursor.next());
コンソールで:
#####*****{ "_id" : "711850" , "list" : [ "example@gmail.com" , "peanut@gmail.com" , "chewie@gmail.com" , "gold@gmail.com"]}
検索クエリは正しいですが、アイテムが削除されません...