MongoDB入门教程

全文概要

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;

猜你喜欢

转载自blog.csdn.net/tianmlin1/article/details/80339077