Java MongoDB: удалить документ
В этом руководстве мы покажем вам, как использоватьcollection.remove()
для удаления документов из коллекции.
1. Тестовые данные
Вставьте 10 документов от 1 до 10 для тестирования.
for (int i=1; i <= 10; i++) { collection.insert(new BasicDBObject().append("number", i)); }
2. DBCollection.remove()
Ниже приведены фрагменты кода для удаления документов.
Пример 1
Получить первый документ и удалить его. В этом случае число = 1 удаляется.
DBObject doc = collection.findOne(); //get first document collection.remove(doc);
Пример 2
Помещает запрос вBasicDBObject
. В этом случае число = 2 удаляется.
BasicDBObject document = new BasicDBObject(); document.put("number", 2); collection.remove(document);
А оператор?
Две распространенные ошибки:
1. Запрос, как это только удалить номер = 3.
BasicDBObject document = new BasicDBObject(); document.put("number", 2); document.put("number", 3); //override above value 2 collection.remove(document);
2. Хорошая попытка ниже, но такой запрос не будет работать, он ничего не удалит.
BasicDBObject document = new BasicDBObject(); Listlist = new ArrayList (); list.add(7); list.add(8); document.put("number", list); collection.remove(document);
Для запроса «И» необходимо использовать оператор «$ in» или «$ and», см. Пример 5.
Пример 3
ИспользуйтеBasicDBObject
напрямую. В этом случае число = 3 удаляется.
collection.remove(new BasicDBObject().append("number", 3));
Пример 4
Помещает оператор$gt
в объектBasicDBObject
. В этом случае число = 10 удаляется.
BasicDBObject query = new BasicDBObject(); query.put("number", new BasicDBObject("$gt", 9)); collection.remove(query);
Пример 5
Помещает оператор$in
в объектBasicDBObject
, строит запрос в ArrayList. В этом случае число = 4 и число = 5 удаляются.
BasicDBObject query2 = new BasicDBObject(); Listlist = new ArrayList (); list.add(4); list.add(5); query2.put("number", new BasicDBObject("$in", list)); collection.remove(query2);
More MongoDB Operators
Чтобы узнать о других операторах, прочтите этотMongoDB operators quick reference.
Пример 6
Используйте курсор, чтобы удалить все доступные документы. (Не рекомендуется, предпочитаю пример 7)
DBCursor cursor = collection.find(); while (cursor.hasNext()) { collection.remove(cursor.next()); }
Пример 7
Передайте пустой BasicDBObject, и все документы будут удалены.
collection.remove(new BasicDBObject());
Пример 8
Он удаляет все документы и удаляет коллекцию.
collection.drop();
Пример 9
remove()
вернет объектWrireResult
, он содержит полезную информацию об операции удаления. И вы можете использоватьgetN()
, чтобы получить количество затронутых документов.
WriteResult result = collection.remove(query2); System.out.println("Number of documents are deleted : " + result.getN());
3. Полный пример
Полный пример, чтобы показать различные способы удаления документов.
package com.example.core; import java.net.UnknownHostException; import java.util.ArrayList; import java.util.List; import com.mongodb.BasicDBObject; import com.mongodb.DB; import com.mongodb.DBCollection; import com.mongodb.DBCursor; import com.mongodb.DBObject; import com.mongodb.Mongo; import com.mongodb.MongoException; /** * Java MongoDB : Delete document * @author example */ public class App { public static void main(String[] args) { try { Mongo mongo = new Mongo("localhost", 27017); DB db = mongo.getDB("yourdb"); // get a single collection DBCollection collection = db.getCollection("dummyColl"); //insert number 1 to 10 for testing for (int i=1; i <= 10; i++) { collection.insert(new BasicDBObject().append("number", i)); } //remove number = 1 DBObject doc = collection.findOne(); //get first document collection.remove(doc); //remove number = 2 BasicDBObject document = new BasicDBObject(); document.put("number", 2); collection.remove(document); //remove number = 3 collection.remove(new BasicDBObject().append("number", 3)); //remove number > 9 , means delete number = 10 BasicDBObject query = new BasicDBObject(); query.put("number", new BasicDBObject("$gt", 9)); collection.remove(query); //remove number = 4 and 5 BasicDBObject query2 = new BasicDBObject(); Listlist = new ArrayList (); list.add(4); list.add(5); query2.put("number", new BasicDBObject("$in", list)); collection.remove(query2); //print out the document DBCursor cursor = collection.find(); while(cursor.hasNext()) { System.out.println(cursor.next()); } collection.drop(); System.out.println("Done"); } catch (UnknownHostException e) { e.printStackTrace(); } catch (MongoException e) { e.printStackTrace(); } } }
Вывод…
{ "_id" : { "$oid" : "4dc7a6989e3a66c5faeee757"} , "number" : 6} { "_id" : { "$oid" : "4dc7a6989e3a66c5faeee758"} , "number" : 7} { "_id" : { "$oid" : "4dc7a6989e3a66c5faeee759"} , "number" : 8} { "_id" : { "$oid" : "4dc7a6989e3a66c5faeee75a"} , "number" : 9} Done