Java MongoDB: Удалить документ

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();
    List list = 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();
    List list = 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();
    List list = 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