1.初始化MongoTemplate
// 设置IP和端口
ServerAddress serverAddress = new ServerAddress(“127.0.0.1”, 27017);
MongoClientOptions.Builder builder = new Builder();
// 设置当链接空闲时,空闲线程池中最大链接数
builder.connectionsPerHost(100);
// 设置一个线程等待链接可用的最大等待毫秒数
builder.threadsAllowedToBlockForConnectionMultiplier(10);
// 创建客户端并设置数据库
MongoClient mongo = new MongoClient(serverAddress, builder.build());
MongoTemplate mongoTemplate = new MongoTemplate(mongo, DB_NAME);
2.MongoTemplate实现增删改查
查询
// 设置查询条件
Criteria cri = new Criteria();
(1)and查询
//相等 * = VALUE
cri.and(KEY).is(VALUE);
// 不相等 * != VALUE --> $ne
cri.and(KEY).ne(VALUE);
// 大于等于 * >= VALUE --> $gte
cri.and(KEY).gte(VALUE);
//大于 * > VALUE --> $gt
cri.and(KEY).gt(VALUE);
// 小于等于 * <= VALUE --> $lte
cri.and(KEY).lte(VALUE);
//小于 * < VALUE --> $lt
cri.and(KEY).lt(VALUE);
// 模糊查询 * like VALUE
cri.and(KEY).regex((String) VALUE,"i"); // 加上“i”表示不区分大小写比较
// 在其中 * in VALUES --> $in
cri.and(KEY).in((List<Object>) VALUES);
// 不在其中 * not in VALUES --> $nin
cri.and(KEY).nin((List<Object>) VALUES);
// 两值之间包括两值 VALUE1 <= * <= VALUE2
cri.and(KEY).gte(VALUE1).lte(VALUE2);
// 是否包含某字段 VALUE为true或false --> $exists
cri.and(KEY).exists((Boolean) VALUE);
(2) or查询
List<Criteria> criteriaList = new ArrayList<>();
// 将or查询条件添加到list
criteriaList.add(Criteria.where(KEY).is(VALUE));
criteriaList.add(Criteria.where(KEY).ne(VALUE));
....
// 使用 orOperator(Criteria... criterias)
cri.orOperator(criteriaList.toArray(new Criteria[criteriaList.size()]));
// 将条件传进查询实例
Query query = new Query(cri);
// 设置排序条件
Sort sort = query.sort();
sort.on(KEY, Order.ASCENDING); // 根据KEY ASC正序
或sort.on(KEY, Order.DESCENDING); // 根据KEY DESC逆序
// 根据query查询collection下的记录数
mongoTemplate.count(query, collection);
// 根据query查询collection下的记录并封装成class的实体返回
mongoTemplate.find(query, clazz collection);
// 查询collection下所有记录并封装成class的实体返回
mongoTemplate.findAll(clazz , collection);
删除
// 根据query删除collection下的记录
mongoTemplate.remove(query, collection);
增改
// 保存或更新实体
mongoTemplate.save(obj, collection);
操作集合
// 根据集合名创建集合
mongoTemplate.createCollection(collection);
// 根据集合名删除集合
mongoTemplate.dropCollection(collection);
// 根据集合名获取集合对象
mongoTemplate.getCollection(collection);