在本教程中,我们向您展示如何使用collection.remove()
从集合中删除文档。
1.测试数据
从编号1到10插入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.可以在下面尝试,但是这样的查询将不起作用,它将删除NOTHING。
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
。 在这种情况下,数字= 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<Integer> list = new ArrayList<Integer>();
list.add(4);
list.add(5);
query2.put("number", new BasicDBObject("$in", list));
collection.remove(query2);
更多MongoDB运算符
有关更多运算符,请阅读此MongoDB运算符快速参考 。
例子6
使用光标删除所有可用的文档。 (不建议使用示例7)
DBCursor cursor = collection.find();
while (cursor.hasNext()) {
collection.remove(cursor.next());
}
例子7
传递一个空的BasicDBObject,整个文档将被删除。
collection.remove(new BasicDBObject());
例子八
它将删除整个文档并删除集合。
collection.drop();
例子9
remove()
将返回WrireResult
对象,它包含有关remove操作的有用信息。 您可以使用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
参考文献
翻译自: https://mkyong.com/mongodb/java-mongodb-delete-document/