java操作mongoDB
{}相当于一个document对象(org.bson包下);
document.append(Sting value,Object object) 后面若需要传入数组对象,需要list
1.插入多条数据
2.更新操作
2.1 更新单个键
相对于脚本 是把一个{} 换成一个document对象
2.2 更新多个键
2.3 更新文档中的数组
在名字为 lisi 的人里面 userlike 数组里面加东西(对数组更新用 $push):
3. 查询
collection.find 返回的是一个迭代器 finditerable
3.1 查询所有文档
上面的 cursor 相当于是取出集合的所有指针,用cursor.next会移动指针
3.2 通过主键查询
注意文档中的id为 object ,而java中是以 Sring匹配的,所以需要转
3.3 查询多个文档
3.3.1 以 大于($gt) 示例
根据年龄查询文档,条件:大于19:
3.3.2 $in(包含)
查询username包含zhangsan1,zhangsan2的文档
后面直接用 ,拼接起来
3.3.3 $nin
查询username 不包含zhangsan1,zhangsan2的文档
3.3.4 $regex(根据正则表达式)
查询上面用户的名字 是以 z 开头 2 结束的文档:
3.3.5 $and
查询名字为zhangsan1 并且年龄为 20 并且userdesc 为 OK 的文档
FindIterable iterable = collection.find(
Filters.and(
Filters.eq("username","zhangsan1"),
Filters.eq("userage",20),
Filters.eq("userdesc","OK" )
)
);
3.3.6 $or
3.3.7 $and 与 $or 联合使用
3.3.8 排序处理
查询代码:
4.日期操作
4.1 插入系统当前日期
上面代码中 new Date() 是标准时间,但是mongo在插入的时候 会做带时区处理,导致少了8个小时,后面用new Date() 查询出来的时间会是正常的,因为java 工具包date支持时区转换,会帮我们转化成系统对应时区时间。意思就是数据库中的存的时间 和 拿到的时间可能不一样。
4.3 插入指定日期
需要使用SimpleDateFormat工具类将给定字符串转成日期格式
4.4 查询日期
4.4.1 查询日期 — $gt
5.聚合操作
5.1 $sum
脚本中:
java中:
collection.aggregate() 返回的是AggregateIterable ,与前面的collection.find()区别
整体代码:
5.1.1 计算值的总和 --$sum
脚本中:
换成java:
5.1.2 在分组中计算值的总和
脚本:
Java中会返回多条(多组)
5.2 $match
5.3 $project–投影约束
$unwind // 将数组元素做一个拆分
5.3.1 project 字符串处理
5.3.2 project 算数运算
6.分页查询
上面的代码用skip会全局扫描,所以适合数据量少的时候,数据量多的时候采用下面:
使用条件判断替换 skip —但不支持跳页
补充
管道操作
例如:
上面的数组里的每一个大括号就是 一个管道