このチュートリアルでは、 `collection.remove()`を使ってコレクションから文書を削除する方法を説明します。

1.テストデータ

テストのために1から10までの10の文書を挿入します。

for (int i=1; i <= 10; i++) {
    collection.insert(new BasicDBObject().append("number", i));
}

2. DBCollection.remove()

ドキュメントを削除するには、下記のコードスニペットを参照してください。

例1

最初の文書を取得して削除します。この場合、number = 1が削除されます。

    DBObject doc = collection.findOne();//get first document
    collection.remove(doc);

例2

`BasicDBObject`にクエリを挿入します。この場合、number = 2が削除されます。

    BasicDBObject document = new BasicDBObject();
    document.put("number", 2);
    collection.remove(document);

2つのよくある間違い:

{空} 1。このようなクエリはdelete number = 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<Integer> list = new ArrayList<Integer>();
    list.add(7);
    list.add(8);
    document.put("number", list);
    collection.remove(document);

“AND”クエリの場合、 “$ in”または “$ and”演算子を使用する必要があります(例5を参照)。

例3

`BasicDBObject`を直接使用してください。この場合、number = 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でクエリを構築します。この場合、number = 4およびnumber = 5が削除されます。

    BasicDBObject query2 = new BasicDBObject();
    List<Integer> list = new ArrayList<Integer>();
    list.add(4);
    list.add(5);
    query2.put("number", new BasicDBObject("$in", list));
    collection.remove(query2);

  • More MongoDB Operators ** 他の演算子については、http://docs.mongodb.org/manual/reference/operators/#comparison[MongoDB演算子のクイックリファレンス]をお読みください。

例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.mkyong.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 mkyong
 ** /
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<Integer> list = new ArrayList<Integer>();
    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

参考文献

クイックリファレンス]。

http://api.mongodb.org/java/2.6.5/com/mongodb/WriteResult.html

[MongoDB

WriteResult JavaDoc]

リンク://タグ/削除/[削除]リンク://タグ/mongodb/[mongodb]