MongoDB (一) Java使用MongoDB[CURD]

0.引入jar包获取

<dependencies>
	<dependency>
		<groupId>org.mongodb</groupId> 
		<artifactId>mongo-java-driver</artifactId>
		<version>3.12.13</version>
	</dependency>
</dependencies>

1.创建连接

1.1.无密码连接

1.1.1.使用com.mongodb.MongoClient

import java.util.function.Consumer;

import org.bson.Document;

import com.mongodb.MongoClient;

public class MongoDBTest {
	private final static String IP = "localhost";
	private final static int PORT = 27017;
	
	public static void main(String[] args) {
		try {
			MongoClient mongoClient = new MongoClient();
			// 或者
			MongoClient mongoClient = new MongoClient(IP, PORT);
		}
	}
}

1.1.2.使用com.mongodb.client.MongoClient

import com.mongodb.client.MongoClient;
import com.mongodb.client.MongoClients;

public class MongoDBClientTest {
	public static void main(String[] args) {
		try {
			//本地
			MongoClient mongoClient = MongoClients.create();
			// 或者
			MongoClient mongoClient = MongoClients.create("mongodb://localhost");
			// 或者
			MongoClient mongoClient = MongoClients.create("mongodb://localhost:27017");
			// 或者
			MongoClient mongoClient = MongoClients.create(new ConnectionString("mongodb://localhost"));
			// 或者
			MongoClient mongoClient = MongoClients.create(new ConnectionString("mongodb://localhost:27017"));
		}
	}
}

1.2.有密码连接

public class MongoDBClientTest {
	public static void main(String[] args) {
		MongoClientSettings settings = MongoClientSettings.builder()
				.applyConnectionString(new ConnectionString("mongodb://userName:password@localhost:27017/?authSource=dbname"))
			    .applyToConnectionPoolSettings(builder ->
			        builder.maxWaitTime(10, TimeUnit.SECONDS)
			        .maxSize(200))
			    .build();
		MongoClient mongoClient = MongoClients.create(settings);
    }

其中, authSource为授权给userName的数据库名称

1.3.有密码连接集群

	public static void main(String[] args) {
		MongoClientSettings settings = MongoClientSettings.builder()
				.applyConnectionString(new ConnectionString("mongodb://username:password@ip1.com:27017,ip2.com:27017/?authSource=admin&replicaSet=test"))
			    .applyToConnectionPoolSettings(builder ->
			        builder.maxWaitTime(10, TimeUnit.SECONDS)
			        .maxSize(200))
			    .build();
		MongoClient mongoClient = MongoClients.create(settings);
    }

其中, authSource为授权给userName的数据库名称

2.创建DB

import java.util.function.Consumer;

import org.bson.Document;

import com.mongodb.MongoClient;
import com.mongodb.client.MongoDatabase;

public class MongoDBTest {
	private final static String IP = "localhost";
	private final static int PORT = 27017;
	private final static String DATABASE = "database";
	
	public static void main(String[] args) {
		try (MongoClient mongoClient = new MongoClient(IP, PORT)) {
			MongoDatabase db = mongoClient.getDatabase(DATABASE);
		}
	}
}

说明: mongodb没有创建数据库的方法, 可以通过getDatabase方法来实现, 如果该数据库存在,则不会创建新的数据库, 如果不存在, 则会自动创建.

2.集合

2.1.创建集合

import java.util.function.Consumer;

import org.bson.Document;

import com.mongodb.MongoClient;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoDatabase;

public class MongoDBTest {
	private final static String IP = "localhost";
	private final static int PORT = 27017;
	private final static String DATABASE = "database";
	private final static String COLLECTION = "reel";
	
	public static void main(String[] args) {
		try (MongoClient mongoClient = new MongoClient(IP, PORT)) {
			MongoDatabase db = mongoClient.getDatabase(DATABASE);
			db.createCollection(COLLECTION);
		}
	}
}

2.2.获取集合

import java.util.function.Consumer;

import org.bson.Document;

import com.mongodb.MongoClient;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoDatabase;

public class MongoDBTest {
	private final static String IP = "localhost";
	private final static int PORT = 27017;
	private final static String DATABASE = "database";
	private final static String COLLECTION = "reel";
	
	public static void main(String[] args) {
		try (MongoClient mongoClient = new MongoClient(IP, PORT)) {
			MongoDatabase db = mongoClient.getDatabase(DATABASE);
			MongoCollection<Document> collection = db.getCollection(COLLECTION);
			// 获取集合列表
			MongoIterable<String> listCollectionNames = db.listCollectionNames();
		}
	}
}

2.3.删除集合

import java.util.function.Consumer;

import org.bson.Document;

import com.mongodb.MongoClient;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoDatabase;

public class MongoDBTest {
	private final static String IP = "localhost";
	private final static int PORT = 27017;
	private final static String DATABASE = "database";
	private final static String COLLECTION = "reel";
	
	public static void main(String[] args) {
		try (MongoClient mongoClient = new MongoClient(IP, PORT)) {
			MongoDatabase db = mongoClient.getDatabase(DATABASE);
			MongoCollection<Document> collection = db.getCollection(COLLECTION);
			collection.drop();
		}
	}
}

3.新增

3.1.单个新增

import org.bson.Document;

import com.mongodb.MongoClient;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoDatabase;

public class MongoDBInsertTest {
	private final static String IP = "localhost";
	private final static int PORT = 27017;
	private final static String DATABASE = "database";
	private final static String COLLECTION = "reel";
	
	public static void main(String[] args) {
		try (MongoClient mongoClient = new MongoClient(IP, PORT)) {
			insertOneData(mongoClient);
		}
	}
	
	public static void insertOneData(MongoClient mongoClient) {
		MongoCollection<Document> collection = getCollection(mongoClient);
		Document document = new Document().append("reel_id", "X0003").append("name", "B_3").append("qty", 120);
		//Document document = new Document().append("_id", 1).append("reel_id", "X0003").append("name", "B_3").append("QTY", 120);
		collection.insertOne(document);
		
	}
	
	private static MongoCollection<Document> getCollection(MongoClient mongoClient) {
		MongoDatabase db = mongoClient.getDatabase(DATABASE);
		MongoCollection<Document> collection = db.getCollection(COLLECTION);
		return collection;
	}
}

说明:
没有设置ID, 则数据库会自动生成一个唯一ID;
设置了ID, 如果数据库没有该ID, 则为新增操作, 如果有该ID, 则抛出异常

3.2.多个新增

import java.util.ArrayList;
import java.util.List;

import org.bson.Document;

import com.mongodb.MongoClient;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoDatabase;

public class MongoDBInsertTest {
	private final static String IP = "localhost";
	private final static int PORT = 27017;
	private final static String DATABASE = "database";
	private final static String COLLECTION = "reel";
	
	public static void main(String[] args) {
		try (MongoClient mongoClient = new MongoClient(IP, PORT)) {
			insertManyData(mongoClient);
		}
	}
	
	public static void insertManyData(MongoClient mongoClient) {
		MongoCollection<Document> collection = getCollection(mongoClient);
		List<Document> documents = new ArrayList<Document>();
		int begin = 4;
		for (int i = begin; i < begin + 3; i++) {
			Document document = new Document().append("reel_id", "X000" + i).append("name", "B_" + i).append("QTY", 120 + i * 10);
			documents.add(document);
		}
		collection.insertMany(documents);
	}
	
	private static MongoCollection<Document> getCollection(MongoClient mongoClient) {
		MongoDatabase db = mongoClient.getDatabase(DATABASE);
		MongoCollection<Document> collection = db.getCollection(COLLECTION);
		return collection;
	}
}

4.查询

4.1.基本查询

import java.util.function.Consumer;

import org.bson.Document;

import com.mongodb.BasicDBObject;
import com.mongodb.MongoClient;
import com.mongodb.client.FindIterable;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoDatabase;
public class MongoDBQueryTest {
	private final static String IP = "localhost";
	private final static int PORT = 27017;
	private final static String DATABASE = "database";
	private final static String COLLECTION = "reel";

	public static void main(String[] args) {
		try (MongoClient mongoClient = new MongoClient(IP, PORT)) {
			basicQuery(mongoClient);
		}
	}
	
	public static void basicQuery(MongoClient mongoClient) {
		MongoCollection<Document> collection = getCollection(mongoClient);
		FindIterable<Document> findIterable = collection.find();
		findIterable.forEach(new Consumer<Document>() {
			@Override
			public void accept(Document document) {
				String name = document.getString("name");
				System.out.println(name);
			}
		});
	}
	
	private static MongoCollection<Document> getCollection(MongoClient mongoClient) {
		MongoDatabase db = mongoClient.getDatabase(DATABASE);
		MongoCollection<Document> collection = db.getCollection(COLLECTION);
		return collection;
	}
}

4.2.表达式查询

4.2.1.使用Bson设置查询条件

可以使用com.mongodb.BasicDBObject类, 或者org.bson.Document类, 因为他们都实现 org.bson.conversions.Bson

import java.util.function.Consumer;
import java.util.regex.Pattern;

import org.bson.Document;

import com.mongodb.BasicDBObject;
import com.mongodb.MongoClient;
import com.mongodb.client.FindIterable;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoDatabase;

public class MongoDBQueryTest {
	private final static String IP = "localhost";
	private final static int PORT = 27017;
	private final static String DATABASE = "database";
	private final static String COLLECTION = "reel";
	
	public static void main(String[] args) {
		try (MongoClient mongoClient = new MongoClient(IP, PORT)) {
			regexQuery(mongoClient);
		}
	}
	
	public static void regexQuery(MongoClient mongoClient) {
		MongoCollection<Document> collection = getCollection(mongoClient);
			
		BasicDBObject regexQuery = new BasicDBObject();
		// $regex类似于like查询
		regexQuery.put("name", new BasicDBObject("$regex", "R.*"));
		// 其中的R.*也可以使用java.util.regex.Pattern替换, 如下:
		// Pattern compile = Pattern.compile("^R");
		// regexQuery.put("name", new BasicDBObject("$regex", compile));
		
		// $lte  $lt $qt $qte等比较运算符
		regexQuery.put("qty", new BasicDBObject("$lte", 100));
	
		// 也可以使用Document替换BasicDBObject: 使用$regex
		/**
		Document regexQuery = new Document();
		regexQuery.put("name", new Document("$regex", "R.*"));
		*/

		/**使用Document替换BasicDBObject: 使用Pattern
		Document regexQuery = new Document();
		Pattern pattern = Pattern.compile("R", Pattern.CASE_INSENSITIVE);
		regexQuery.put("name", pattern);
		*/
		
		FindIterable<Document> findIterable = collection.find(regexQuery);
		findIterable.forEach(new Consumer<Document>() {
			@Override
			public void accept(Document document) {
				String name = document.getString("name");
				System.out.println(name);
			}
		});
	}

	private static MongoCollection<Document> getCollection(MongoClient mongoClient) {
		MongoDatabase db = mongoClient.getDatabase(DATABASE);
		MongoCollection<Document> collection = db.getCollection(COLLECTION);
		return collection;
	}
}

4.2.2.使用Filter设置查询条件

import java.util.function.Consumer;

import org.bson.Document;
import org.bson.conversions.Bson;

import com.mongodb.MongoClient;
import com.mongodb.client.FindIterable;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoDatabase;
import com.mongodb.client.model.Filters;

public class MongoDBQueryTest {
	private final static String IP = "localhost";
	private final static int PORT = 27017;
	private final static String DATABASE = "database";
	private final static String COLLECTION = "reel";
	
	public static void main(String[] args) {
		try (MongoClient mongoClient = new MongoClient(IP, PORT)) {
			filterQuery(mongoClient);
		}
	}
	
	public static void filterQuery(MongoClient mongoClient) {
		MongoCollection<Document> collection = getCollection(mongoClient);
		Bson lt = Filters.lte("qty", 100);
		FindIterable<Document> findIterable = collection.find(lt);
		findIterable.forEach(new Consumer<Document>() {
			@Override
			public void accept(Document document) {
				String name = document.getString("name");
				Integer qty = document.getInteger("qty");
				System.out.println(name + "->" + qty);
			}
		});
	}
	
	private static MongoCollection<Document> getCollection(MongoClient mongoClient) {
		MongoDatabase db = mongoClient.getDatabase(DATABASE);
		MongoCollection<Document> collection = db.getCollection(COLLECTION);
		return collection;
	}
}

结果:

R_1->100
A_2->50

4.3.排序查询

import java.util.function.Consumer;

import org.bson.Document;

import com.mongodb.BasicDBObject;
import com.mongodb.MongoClient;
import com.mongodb.client.FindIterable;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoDatabase;

public class MongoDBQueryTest {
	private final static String IP = "localhost";
	private final static int PORT = 27017;
	private final static String DATABASE = "database";
	private final static String COLLECTION = "reel";
	
	public static void main(String[] args) {
		try (MongoClient mongoClient = new MongoClient(IP, PORT)) {
			sortQuery(mongoClient);
		}
	}
	
	public static void sortQuery(MongoClient mongoClient) {
		MongoCollection<Document> collection = getCollection(mongoClient);
		BasicDBObject sort = new BasicDBObject().append("qty", 1).append("name", -1);
		// 或者使用Filters & Bson
		// Bson sort = Filters.and(Filters.eq("qty", 1), Filters.eq("name", -1));
		// 或者使用Document
		// Document sort = new Document("qty", 1);
		// sort.put("name", -1);
		FindIterable<Document> findIterable = collection.find().sort(sort);
		findIterable.forEach(new Consumer<Document>() {
			@Override
			public void accept(Document document) {
				String name = document.getString("name");
				System.out.println(name);
			}
		});
	}
	
	private static MongoCollection<Document> getCollection(MongoClient mongoClient) {
		MongoDatabase db = mongoClient.getDatabase(DATABASE);
		MongoCollection<Document> collection = db.getCollection(COLLECTION);
		return collection;
	}
}

说明: sort方法第一个参数为字段名, 第二个参数 -1是倒序查询, 1是顺序查询

4.4.分页查询

import java.util.function.Consumer;

import org.bson.Document;

import com.mongodb.MongoClient;
import com.mongodb.client.FindIterable;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoDatabase;

public class MongoDBQueryTest {
	private final static String IP = "localhost";
	private final static int PORT = 27017;
	private final static String DATABASE = "database";
	private final static String COLLECTION = "reel";
	
	public static void main(String[] args) {
		try (MongoClient mongoClient = new MongoClient(IP, PORT)) {
			pagingQuery(mongoClient);
		}
	}
	
	public static void pagingQuery(MongoClient mongoClient) {
		MongoCollection<Document> collection = getCollection(mongoClient);
		FindIterable<Document> findIterable = collection.find().limit(10).skip(0);
		findIterable.forEach(new Consumer<Document>() {
			@Override
			public void accept(Document document) {
				String name = document.getString("name");
				System.out.println(name);
			}
		});
	}
	
	private static MongoCollection<Document> getCollection(MongoClient mongoClient) {
		MongoDatabase db = mongoClient.getDatabase(DATABASE);
		MongoCollection<Document> collection = db.getCollection(COLLECTION);
		return collection;
	}
}

说明: limit为查询的数量, skip为跳过的数量, 如果是0, 则查询的时候是从第1个数开始.

4.5.设置查询返回字段

import java.util.function.Consumer;

import org.bson.Document;
import org.bson.conversions.Bson;

import com.mongodb.MongoClient;
import com.mongodb.client.FindIterable;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoDatabase;
import com.mongodb.client.model.Projections;

public class MongoDBQueryTest {
	private final static String IP = "localhost";
	private final static int PORT = 27017;
	private final static String DATABASE = "database";
	private final static String COLLECTION = "reel";
	
	public static void main(String[] args) {
		try (MongoClient mongoClient = new MongoClient(IP, PORT)) {
			setReturnFiledQuery(mongoClient);
		}
	}
	
	public static void setReturnFiledQuery(MongoClient mongoClient) {
		MongoCollection<Document> collection = getCollection(mongoClient);
		// 设置包含字段返回
		Bson include = Projections.include("name", "qty");
		// 去除部分字段返回
		Bson exclude = Projections.exclude("_id");
		// 也可以使用excludeId方法代替exclude("_id")
		//Bson excludeId = Projections.excludeId();

		//include 和 exclude可以只设置一种
		Bson projection = Projections.fields(include, exclude);
		
		FindIterable<Document> findIterable = collection.find().projection(projection);
		findIterable.forEach(new Consumer<Document>() {
			@Override
			public void accept(Document document) {
				System.out.println(document);
			}
		});
	}
	
	private static MongoCollection<Document> getCollection(MongoClient mongoClient) {
		MongoDatabase db = mongoClient.getDatabase(DATABASE);
		MongoCollection<Document> collection = db.getCollection(COLLECTION);
		return collection;
	}
}

结果如下:

Document{{name=R_1, qty=100}}
Document{{name=A_2, qty=50}}

4.6.各种查询

4.6.1.eq查询

Document filter = new Document();
filter.append("id", new Document("$eq", "R"));

4.6.2.ne查询

Document filter = new Document();
filter.append("id", new Document("$ne", "R"));

4.6.3.like查询之Pattern

Document filter = new Document();
Pattern pattern = Pattern.compile("R", Pattern.CASE_INSENSITIVE);
filter.append("name", pattern);

4.6.4.like查询之regex

Document filter = new Document();
filter.append("name", new Document("$regex", "R").append("$options", "i"));

4.6.5.in查询

Document filter = new Document();
filter.append("id", new Document("$in", List<Object>));

4.6.6.not in查询

Document filter = new Document();
filter.append("id", new Document("$nin", List<Object>));

4.6.7.between查询

Document filter = new Document();
// 大于等于和小于等于
filter.append("test_date", new Document("$gte", new Date()).append(new Document("$lte", new Date()));
// 大于和小于
filter.append("test_date", new Document("$gt", new Date()).append(new Document("$lt", new Date()));

4.6.8.不等于查询

Document filter = new Document();
filter.append("name", new Document("$ne", "R"));

4.6.9.or查询

Document filter = new Document();
filter.append("$or", Arrays.asList(new Document("name", "R"), new Document("test_date", new Document("$lt", new Date()))));

查询name等于 R 或者test_date小于 当前时间 的数据

5.修改

5.1.单个修改

import org.bson.Document;
import org.bson.conversions.Bson;

import com.mongodb.MongoClient;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoDatabase;
import com.mongodb.client.model.Filters;
import com.mongodb.client.model.Updates;
import com.mongodb.client.result.UpdateResult;

public class MongoDBUpdateTest {
	private final static String IP = "localhost";
	private final static int PORT = 27017;
	private final static String DATABASE = "database";
	private final static String COLLECTION = "reel";
	
	public static void main(String[] args) {
		try (MongoClient mongoClient = new MongoClient(IP, PORT)) {
			updateOne(mongoClient);
		}
	}
	
	public static void updateOne(MongoClient mongoClient) {
		MongoCollection<Document> collection = getCollection(mongoClient);
		// 1.filter部分
		Bson filters = Filters.lt("qty", 100);
		// 或者使用BasicDBObject
		//BasicDBObject filters = new BasicDBObject().append("qty", new BasicDBObject("$lt", 100));
		
		// 2.update部分
		Document document = new Document().append("$set", new Document().append("qty", 30));
		// 或者使用BasicDBObject也可以
		//BasicDBObject document = new BasicDBObject().append("$set", new Document().append("qty", 40));
		// 或者使用Updates.combine方法也可以
		// Bson updateDoc = Updates.combine(Updates.set("qty", 60));

		// 3.update db
		UpdateResult updateResult = collection.updateOne(filters, document);
		// 还可以配置: 如果不存在该数据, 则新增一条数据
		//UpdateOptions options = new UpdateOptions().upsert(true);
		//UpdateResult updateResult = collection.updateMany(filter, updateDoc, options);
		
		System.out.println(updateResult);
	}

	private static MongoCollection<Document> getCollection(MongoClient mongoClient) {
		MongoDatabase db = mongoClient.getDatabase(DATABASE);
		MongoCollection<Document> collection = db.getCollection(COLLECTION);
		return collection;
	}
}

5.2.多个修改

import org.bson.Document;
import org.bson.conversions.Bson;

import com.mongodb.MongoClient;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoDatabase;
import com.mongodb.client.model.Filters;
import com.mongodb.client.model.Updates;
import com.mongodb.client.result.UpdateResult;

public class MongoDBUpdateTest {
	private final static String IP = "localhost";
	private final static int PORT = 27017;
	private final static String DATABASE = "database";
	private final static String COLLECTION = "reel";
	
	public static void main(String[] args) {
		try (MongoClient mongoClient = new MongoClient(IP, PORT)) {
			updateMany(mongoClient);
		}
	}
	
	public static void updateMany(MongoClient mongoClient) {
		MongoCollection<Document> collection = getCollection(mongoClient);
		Bson filter = Filters.lt("qty", 100);
		Bson updateDoc = Updates.combine(Updates.set("qty", 60));
		UpdateResult updateResult = collection.updateMany(filter, updateDoc);
		System.out.println(updateResult);
	}

	private static MongoCollection<Document> getCollection(MongoClient mongoClient) {
		MongoDatabase db = mongoClient.getDatabase(DATABASE);
		MongoCollection<Document> collection = db.getCollection(COLLECTION);
		return collection;
	}
}

5.3.替换(慎用)

import org.bson.Document;
import org.bson.conversions.Bson;

import com.mongodb.MongoClient;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoDatabase;
import com.mongodb.client.model.Filters;
import com.mongodb.client.result.UpdateResult;

public class MongoDBUpdateTest {
	private final static String IP = "localhost";
	private final static int PORT = 27017;
	private final static String DATABASE = "database";
	private final static String COLLECTION = "reel";
	
	public static void main(String[] args) {
		try (MongoClient mongoClient = new MongoClient(IP, PORT)) {
			replaceOne(mongoClient);
		}
	}
	
	public static void replaceOne(MongoClient mongoClient) {
		MongoCollection<Document> collection = getCollection(mongoClient);
		Bson filter = Filters.lt("qty", 100);
		Document updateDoc = new Document()
				.append("qty", 20);
		UpdateResult updateResult = collection.replaceOne(filter, updateDoc);
		System.out.println(updateResult);
	}

	private static MongoCollection<Document> getCollection(MongoClient mongoClient) {
		MongoDatabase db = mongoClient.getDatabase(DATABASE);
		MongoCollection<Document> collection = db.getCollection(COLLECTION);
		return collection;
	}
}

说明: 该方法慎用, 使用该方法替换之后, 只有设置的字段会被修改替换, 其他的字段等同于被删除, 仅剩下_id和设置的字段.

5.4.$set 和$inc的使用

Document setDocument = new Document();
setDocument.put("name", "R0001");
Document updateDocument = new Document();
updateDocument.put("$set", setDocument);// 更新字段
updateDocument.put("$inc", new Document("qty", 1));//字段数据增加1

6.删除

6.1.删除单个

import org.bson.Document;
import org.bson.conversions.Bson;

import com.mongodb.MongoClient;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoDatabase;
import com.mongodb.client.model.Filters;
import com.mongodb.client.result.DeleteResult;

public class MongoDBDeleteTest {
	private final static String IP = "localhost";
	private final static int PORT = 27017;
	private final static String DATABASE = "database";
	private final static String COLLECTION = "reel";
	
	public static void main(String[] args) {
		try (MongoClient mongoClient = new MongoClient(IP, PORT)) {
			deleteOne(mongoClient);
		}
	}
	
	public static void deleteOne(MongoClient mongoClient) {
		MongoCollection<Document> collection = getCollection(mongoClient);
		Bson filter = Filters.lte("qty", 20);
		DeleteResult deleteResult = collection.deleteOne(filter);
		System.out.println(deleteResult);
	}

	private static MongoCollection<Document> getCollection(MongoClient mongoClient) {
		MongoDatabase db = mongoClient.getDatabase(DATABASE);
		MongoCollection<Document> collection = db.getCollection(COLLECTION);
		return collection;
	}
}

结果

AcknowledgedDeleteResult{deletedCount=1}

6.2.删除多个

import org.bson.Document;
import org.bson.conversions.Bson;

import com.mongodb.MongoClient;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoDatabase;
import com.mongodb.client.model.Filters;
import com.mongodb.client.result.DeleteResult;

public class MongoDBDeleteTest {
	private final static String IP = "localhost";
	private final static int PORT = 27017;
	private final static String DATABASE = "database";
	private final static String COLLECTION = "reel";
	
	public static void main(String[] args) {
		try (MongoClient mongoClient = new MongoClient(IP, PORT)) {
			deleteMany(mongoClient);
		}
	}
	
	public static void deleteMany(MongoClient mongoClient) {
		MongoCollection<Document> collection = getCollection(mongoClient);
		Bson filter = Filters.lt("qty", 100);
		DeleteResult deleteResult = collection.deleteMany(filter);
		System.out.println(deleteResult);
	}

	private static MongoCollection<Document> getCollection(MongoClient mongoClient) {
		MongoDatabase db = mongoClient.getDatabase(DATABASE);
		MongoCollection<Document> collection = db.getCollection(COLLECTION);
		return collection;
	}
}

结果

AcknowledgedDeleteResult{deletedCount=2}

7.其他

7.1.ObjectId和String的相互转换

7.1.1.String转ObjectId

ObjectId objectId = new ObjectId(id);

7.1.2.ObjectId转String

Document document = new Document();
String id = document.getObjectId("_id").toHexString();

7.2.aggregate聚合函数的使用

  • $match 对应各个filter
  • $sort 对应排序字段的Document
  • $group 对应 group by
  • $replaceRoot
  • $skip 对应offset
  • $limit 对应分页limit
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值