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。このようなクエリは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]