Java MongoDB:ドキュメントの削除
このチュートリアルでは、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. このようなクエリは、番号= 3のみを削除します。
BasicDBObject document = new BasicDBObject();
document.put("number", 2);
document.put("number", 3); //override above value 2
collection.remove(document);
2. 以下を試してみてください。ただし、このようなクエリは機能せず、NOTHINGを削除します。
BasicDBObject document = new BasicDBObject();
List list = new ArrayList();
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 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