MongoDB查询

//配置

public class Mongodb {
   private static String host = "";//域名
   private static int port = ;//端口
   private static String user = "sc";
   private static String pwd = "sc_1!$";

   public final MongoClient getDB(String dbName) {
      // 连接到MongoDB服务 如果是远程连接可以替换“localhost”为服务器所在IP地址
      // ServerAddress()两个参数分别为 服务器地址 和 端口
      ServerAddress serverAddress = new ServerAddress(host, port);
      List<ServerAddress> addrs = new ArrayList<ServerAddress>();
      addrs.add(serverAddress);

      // MongoCredential.createScramSha1Credential()三个参数分别为 用户名 数据库名称 密码
      MongoCredential credential = MongoCredential.createScramSha1Credential(user, dbName, pwd.toCharArray());
      List<MongoCredential> credentials = new ArrayList<MongoCredential>();
      credentials.add(credential);

      // 通过连接认证获取MongoDB连接
      return new MongoClient(addrs, credentials);
   }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22

//指定库配置

private final static MongoClient client = new Mongodb().getDB("");//库名
MongoDatabase mongoDatabase = client.getDatabase("");//数据库
MongoCollection<Document> collection = mongoDatabase.getCollection(“”);//表名

//查询语句
BasicDBList bsList = new BasicDBList();
bsList.add("");//添加值
//使用这种方法更简单方便,写起来也命了。另一种方法相当于手拼json,未作记录
Bson _filters = Filters.and(
        Filters.eq("", cityName),//属性名  值
        Filters.in("",)//要使用 in 函数   值必须为BasicDBList类型
        Filters.gte("", ) //大于等于: 
 Filters.gt("", ) //大于
        Filters.lte("",),//小于等于
        Filters.lt("",),//小于
  Filters.ne("", ),//不等于
        Filters.or(
                Filters.regex("name",str),// 属性名 值
                Filters.regex("category",str), //属性名 值
                Filters.regex("detail.address",str)  //如果不是最外层的属性,则需要从外层属性一层层点进去
        ),
 Filters.near("point", new Point(new Position(lng, lat)), 1000000000d, 0d)) //经纬度 必须要创立索引  第一个值为经纬度的属性,第二个是经纬度的值(double),第三个是最大距离,第四个是最小距离  默认包含排序
);
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23

//总条数

int totalCount = (int) collection.count(_filters);
1

// 查询器

FindIterable<Document> ret = collection.find();//这样可以创立公共的
1

//查询

ret = ret.filter(_filters).sort(new BasicDBObject(“”,1?1:-1)).skip(pageSize * (pageIndex-1)).limit(pageSize).batchSize(pageSize);//sort 排序前面是属性名,后面是1=正序 -1=倒序    skip 跳过多少条   limit 接下来查到多少条  bathSize  返回的条数
1

//如果需要对查询结果操作

for(Document:document:ret){
//方法1  直接拿key对应的value
document.get("key");
//方法2  转成model   这里不做介绍,mongo的数据是json形式的数据所以直接google json怎么转model就可以
}
1
2
3
4
5
上次更新: 2024-01-03, 13:22:13
最近更新
01
2023年度总结
01-03
02
MongoDB的简单的常用语法
12-11
03
cetnos7通过nfs共享磁盘文件
11-24
更多文章>