MongoDB入门教程
程序员文章站
2024-01-22 22:56:40
...
全文概要
mongoDB是一个基于分布式文件存储的开源数据库系统,是一个比较典型的Nosql数据库。本文主要讲述mongoDB常见的操作。
和关系型数据库比较
下面通过一张图,来说明mongoDB和关系型数据库的区别:
mongoDB插入数据
db.Activity_Offer.insert({"activity_id":180518,"available_offer_amount":20,"cost_reward":300,"create_time":new Date()});
插入成功后,用可视化工具查看如下:
注:Activity_Offer表示集合名称。
mongoDB删除数据
--根据条件删除
db.Activity_Offer.remove({"_id":ObjectId("5afbf5a368d57d162811590f")});
--删除所有数据
db.Activity_Offer.remove({});
注:删除文档是永久性的,不能撤销,也不能恢复的。因此,在执行remove()函数前先用find()命令来查看下是否正确。
mongoDB修改数据
--更新满足条件的第一条记录
db.Activity_Offer.update({"activity_id":180518},{$set: {"offer_value":8888});
--更新满足条件的所有记录
db.Activity_Offer.update({"activity_id":180518},{$set: {"offer_value":8888},{multi:true});
mongoDB查询数据
和关系型数据库中常见的操作符号比较:
MongoDB 查询数据的语法格式如下:
db.collection.find(query, projection)
query :可选,使用查询操作符指定查询条件
projection :可选,使用投影操作符指定返回的键。查询时返回文档中所有键值, 只需省略该参数即可(默认省略)。
- 多条件查询
db.Activity_Offer.find({"available_offer_amount":{"$gt": 50},"activity_id":180518});
相当于==》select * from Activity_Offer where available_offer_amount >50 and activity_id=180518;
- 显示指定列
db.Activity_Offer.find({"activity_id":180518},{"_id":1,"available_offer_amount":1});
相当于==》select _id,available_offer_amount from Activity_Offer where activity_id=180518;
- 多or条件
db.Activity_Offer.find({$or: [{"activity_id":180518},{"offer_id":"route_01"}]});
相当于==》select* from Activity_Offer where activity_id=180518 or offer_id = 'route_01';
- or和and一起使用
db.Activity_Offer.find({"offer_id":"route_02",$or: [{"activity_id":180518},{"offer_id":"route_01"}]});
相当于==》select * from Activity_Offer where offer_id=‘route_02’ and (activity_id=180518 or offer_id= 'route_01');
mongoDB排序分页
排序:在MongoDB中使用使用sort()方法对数据进行排序,sort()方法可以通过参数指定排序的字段,并使用 1 和 -1 来指定排序的方式,其中 1 为升序排列,而-1是用于降序排列。
分页:
借助skip()和limit()方法即可完成分页
关系型数据库中分页如下:
--每页显示5条,显示第三页
select tmp.* from (select t.* ,rownum rr from (select * from Activity_Offer order by offer_id asc ) t) tmp where tmp.rr between 10 and 15;
在mongoDB中可以采用如下分页:
db.Activity_Offer.find().sort({ "offer_id":1 }).skip(10).limit(5);
聚合函数
- 总记录数
db.Activity_Offer.count();
db.Activity_Offer.aggregate([{$group:{_id:null,count:{$sum:1}}}]);
相当于==》select count(*) from Activity_Offer;
- 总数
db.Activity_Offer.aggregate([{$group:{_id:"$activity_id",total:{$sum:"$offer_value"}}}]);
相当于==>select sum(offer_value) from Activity_Offer;
- 分组
db.Activity_Offer.aggregate([{$group:{_id:"$offer_id",total:{$sum:"$offer_value"}}}])
相当于==》select offer_id,sum(offer_value) from Activity_Offer group by offer_id;
- 最大值
db.Activity_Offer.aggregate([{$group:{_id:"$activity_id",max:{$max:"$offer_id"}}}]);
相当于==》select activity_id,max(offer_id) from Activity_Offer group by activity_id;
- 最小值
db.Activity_Offer.aggregate([{$group:{_id:"$activity_id",:{$min:"offer_id"}}}]);
相当于==》select activity_id,min(offer_id) from Activity_Offer group by activity_id;
上一篇: golang访问mongodb
下一篇: MongoDB聚合