MongoDB 是一个基于分布式文件存储的文档型数据库,使用过MongoDB的同学相信很难不被他的特性所吸引。MongoDB 中许多名词和我们常用的关系型数据库不太一致:
对比
作为一个数据库,最基本的功能就是CRUD:
增:db.collection.insertOne(Document)
insert
改:db.collection.updateOne(Bson filter,Bson update)
update
新增或修改:collection.replaceOne(filter, update, new UpdateOptions().upsert(true))
upsert
删除:collection.deleteOne(filter)/collection.deleteMany(filter);
delete
查询:db.collection.find(query, projection)
相比于上面的几种操作,查询就会显得更有技巧。
- query :可选,使用查询操作符指定查询条件
- projection :可选,使用投影操作符指定返回的键。查询时返回文档中所有键值, 只需省略该参数即可(默认省略)。
如果你需要以易读的方式来读取数据,可以使用 pretty() 方法,语法格式如下:
db.col.find().pretty()
如果你只想要查询一条数据,还可以使用findOne() 方法,它只返回一个文档。
查询的关键在于怎么去灵活的构建query对象。
通过id查询一条记录:
queryOne
如果有多个条件,则继续put条件进filter:
query
聚合操作:MongoDB中聚合(aggregate)主要用于处理数据(诸如统计平均值,求和等),并返回计算后的数据结果。有点类似sql语句中的 count(*)。
aggregate
像这种稍微有点复杂的sql要在Mongodb中实现就会显得比较复杂了:select sum(*) from (select deCode from tb group by Decode) t1
aggregate
当然如果你只是单纯的想要查询一个总数,那也有简单的方法:collection.count(cnd);
count
有了以上的这些方法,基本上能完成日常工作中的任务了。