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
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
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
2
3
4
5
编辑 (opens new window)
上次更新: 2024-11-06, 19:27:10