Java对MongoDB的几个查询操作

依赖

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

1.模糊查询like

String keyword = "user";
Query query = Query.query(Criteria.where("name").regex( ".*?" + keyword + ".*" ));
result = mongoTemplate.find(query, User.class);

2.模糊查询not like

String keyword = "user";
Query query = Query.query(Criteria.where("name").regex( "^((?!" + keyword + ").)*$" ));
result = mongoTemplate.find(query, User.class);

3.不等于 ne

String keyword = "user";
Query query = Query.query(Criteria.where("name").ne(keyword);
result = mongoTemplate.find(query, User.class);
`
4.等于 is
```java
String keyword = "user";
Query query = Query.query(Criteria.where("name").is(keyword);
result = mongoTemplate.find(query, User.class);

5.包含 in

object[] keyword = new object;
keyword = {1,2,3,4,5,6};
Query query = Query.query(Criteria.where("name").in(keyword);
result = mongoTemplate.find(query, User.class);

6.大于gt

String keyword = "user";
Query query = Query.query(Criteria.where("name").gt(keyword);
result = mongoTemplate.find(query, User.class);

7.小于lt

String keyword = "user";
Query query = Query.query(Criteria.where("name").lt(keyword);
result = mongoTemplate.find(query, User.class);

8.大于等于gte

String keyword = "user";
Query query = Query.query(Criteria.where("name").gte(keyword);
result = mongoTemplate.find(query, User.class);

9.小于等于lte

String keyword = "user";
Query query = Query.query(Criteria.where("name").lte(keyword);
result = mongoTemplate.find(query, User.class);

10.其他写法
如果是多个查询条件。需要for循环
伪代码

Query query = new Query();
JSONArray jsonarray = xxxx //查询条件
for(i=0;i<jsonarray.size();i++){
	JSONObject jo = jsonarray .getJSONObject(i); 
	String name = jo.getString("name");
	String value= jo.getString("value");
	String judge= jo.getString("judge"); //等于,大于,小于,模糊查询,大于等于。。。。。
	String = jo.getString("value");
	Criteria criteria = new Criteria();
	switch(judge){
		case "eq": 
			criteria = Criteria.where(name).is(value);
			break;
		........
			}
	//判断连接条件
	query.addCriteria(new Criteria.andOperator(criteria));
	query.addCriteria(new Criteria.orOperator(criteria));
	}
//分页
query.sort(排序).skip(从第几页开始).limit(每一页显示几条数据);
//执行查询
result = mongoTemplate.find(query, User.class);

注意:
skip(), limilt(), sort()三个放在一起执行的时候,执行的顺序是先 sort(), 然后是 skip(),最后是显示的 limit()
  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MongoDB 聚合框架提供了一种数据处理方式,它能够对集合中的文档进行分组、筛选、投影、排序、限制以及多表关联等操作,从而生成新的文档集合。下面是几种 MongoDB 聚合查询方式的详解: 1. $match 查询 $match 查询通过筛选文档中的字段来过滤数据,类似于 SQL 中的 WHERE 子句。可以使用各种比较运算符、逻辑运算符和正则表达式等条件来实现高级查询。例如,以下代码将返回所有 age 大于等于 18 的文档: ``` db.collection.aggregate([ { $match : { age : { $gte : 18 } } } ]) ``` 2. $group 查询 $group 查询通过将文档分组来聚合数据。可以使用 $sum、$avg、$min、$max 等聚合运算符来计算每个分组的结果。例如,以下代码将返回每个国家的总人口数: ``` db.collection.aggregate([ { $group : { _id : "$country", population: { $sum : "$population" } } } ]) ``` 3. $project 查询 $project 查询用于投影文档中的字段,类似于 SQL 中的 SELECT 子句。可以使用 $addFields、$subtract、$multiply、$divide 等运算符来进行计算或添加新的字段。例如,以下代码将返回包含 name 和 age 字段的文档: ``` db.collection.aggregate([ { $project : { name : 1, age : 1 } } ]) ``` 4. $sort 查询 $sort 查询用于对文档进行排序,类似于 SQL 中的 ORDER BY 子句。可以使用 1 或 -1 来指定升序或降序排列。例如,以下代码将按 age 字段降序排列文档: ``` db.collection.aggregate([ { $sort : { age : -1 } } ]) ``` 以上是 MongoDB 聚合查询的几种方式,它们可以组合使用来实现更复杂的查询。在 Java 中,可以使用 MongoDBJava 驱动程序来进行聚合查询。具体的实现方式可以参考 MongoDB 的官方文档。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值