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

获取第一个文档并将其删除。 在这种情况下,数字= 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

参考文献

  1. MongoDB操作员快速参考
  2. MongoDB WriteResult JavaDoc

翻译自: https://mkyong.com/mongodb/java-mongodb-delete-document/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值