首先我们先来了解一下什么是Mongodb,有好多小伙伴不知道它是什么意思,我也和你们一样,不太了解,所以今天专门给大家整理了一篇非常详细的讲解,带你入门到入土。
什么是MongoDB ?
MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统。
在高负载的情况下,添加更多的节点,可以保证服务器性能。
MongoDB 旨在为WEB应用提供可扩展的高性能数据存储解决方案。
MongoDB 将数据存储为一个文档,数据结构由键值(key=>value)对组成。MongoDB 文档类似于 JSON 对象。字段值可以包含其他文档,数组及文档数组。
MongoDB 应用案例
下面列举一些公司MongoDB的实际应用:
Craiglist上使用MongoDB的存档数十亿条记录。
FourSquare,基于位置的社交网站,在Amazon EC2的服务器上使用MongoDB分享数据。
Shutterfly,以互联网为基础的社会和个人出版服务,使用MongoDB的各种持久性数据存储的要求。
bit.ly, 一个基于Web的网址缩短服务,使用MongoDB的存储自己的数据。
spike.com,一个MTV网络的联营公司, spike.com使用MongoDB的。
Intuit公司,一个为小企业和个人的软件和服务提供商,为小型企业使用MongoDB的跟踪用户的数据。
sourceforge.net,资源网站查找,创建和发布开源软件免费,使用MongoDB的后端存储。
etsy.com ,一个购买和出售手工制作物品网站,使用MongoDB。
纽约时报,领先的在线新闻门户网站之一,使用MongoDB。
CERN,著名的粒子物理研究所,欧洲核子研究中心大型强子对撞机的数据使用MongoDB。
MongoDB sort() 方法
在 MongoDB 中使用 sort() 方法对数据进行排序,sort() 方法可以通过参数指定排序的字段,并使用 1 和 -1 来指定排序的方式,其中 1 为升序排列,而 -1 是用于降序排列。
语法
sort()方法基本语法如下所示:
>db.COLLECTION_NAME.find().sort({KEY:1})
实例
col 集合中的数据如下:
{ "_id" : ObjectId("56066542ade2f21f36b0313a"), "title" : "PHP 教程", "description" : "PHP 是一种创建动态交互性站点的强有力的服务器端脚本语言。", "by" : "伟美", "url" : "http://www.runoob.com", "tags" : [ "php" ], "likes" : 200 }
{ "_id" : ObjectId("56066549ade2f21f36b0313b"), "title" : "Java 教程", "description" : "Java 是由Sun Microsystems公司于1995年5月推出的高级程序设计语言。", "by" : "伟美", "url" : "http://www.runoob.com", "tags" : [ "java" ], "likes" : 150 }
{ "_id" : ObjectId("5606654fade2f21f36b0313c"), "title" : "MongoDB 教程", "description" : "MongoDB 是一个 Nosql 数据库", "by" : "伟美", "url" : "http://www.runoob.com", "tags" : [ "mongodb" ], "likes" : 100 }
以下实例演示了 col 集合中的数据按字段 likes 的降序排列:
>db.col.find({},{"title":1,_id:0}).sort({"likes":-1})
{ "title" : "PHP 教程" }
{ "title" : "Java 教程" }
{ "title" : "MongoDB 教程" }
>
MongoDB 操作
1、连接远程服务器的MongoDB数据库
mongo 123.206.190.194:27017/account_service -u root -p mYmongo$%123 --authenticationDatabase=admin
-
ip:port/db_name:指明远程服务器的ip地址、端口号、数据库名称
-
-u:指明数据库的用户名
-
-p:指明数据库的密码
2、数据库(table)及集合(collection)说明
MongoDB数据库名称为account_service
MongoDB数据库集合名称为company
company集合的结构如下:
{
"_id" : ObjectId,
"source" : String,
"name" : String,
"mobile" : String,
"password" : String,
"license_no" : String,
"active" : String,
"xd_active" : String,
"frw_active" : String,
"allow_borrow" : String,
"merchant_id" : Array,
"last_login_ip" : String,
"last_login_at" : String,
"updated_at" : Date,
"created_at" : Date
"ec_customer_id" : String
}
3、数据导出
mongoexport -h 123.206.190.194 -u root -p mYmongo$%123 --authenticationDatabase=admin --authenticationMechanism=SCRAM-SHA-1 --port 27017 -d account_service -c company --type=csv -f _id,name,mobile,show_count,last_login_at,active -q "{'source':'3','last_login_at':{$gt:'2018-07-11 17:08:05'}}" -o ./company.csv
-
-h:指明数据库属主机的IP
-
-u:指明数据库的用户名
-
-p:指明数据库的密码
-
--port:指明端口号
-
-d:指明数据库的名字
-
-c:指明collection的名字
-
--type:指明要导入的文件格式
-
-f:指明要导出那些列
-
-q:指明导出数据的过滤条件
-
-o:指明要导出的文件名
-
--authenticationDatabase:指明保存用户凭证的数据库
-
--authenticationMechanism:指明身份验证机制
中文乱码解决方案:使用记事本打开company.csv,执行“另存为”操作,选择“编码”为“UTF-8”。
查询
1、MongoDB与MySQL简单查询对比
2、过滤导出的数据-示例
基础命令
mongoexport -h 123.206.190.194 -u root -p mYmongo$%123 --authenticationDatabase=admin --authenticationMechanism=SCRAM-SHA-1 --port 27017 -d account_service -c company --type=csv -f _id,name,mobile,show_count,last_login_at,active -o ./company.csv
以下命令,都是基于该命令的,即,将下列命令添加基础命令,便组成了完成的条件过滤导出命令。
导出 source 等于 3 的所有数据
-q "{'source':'3'}"
导出 last_login_at 大于 2018-07-10 17:08:05 的所有数据
- q "{'last_login_at':{$lt:'2018-07-10 17:08:05'}}"
导出 last_login_at 小于 2018-07-10 17:08:05 的所有数据
- q "{'last_login_at':{$gt:'2018-07-10 17:08:05'}}"
导出 last_login_at 小于或等于 2018-07-10 17:08:05 的所有数据
- q "{'last_login_at':{$lte:'2018-07-10 17:08:05'}}"
导出 last_login_at 大于或等于 2018-07-10 17:08:05 的所有数据
- q "{'last_login_at':{$gte:'2018-07-10 17:08:05'}}"
导出 source 不等于 3 的所有数据
- q "{'source':{$ne:'3'}}"
导出 source 等于 5 且 last_login_at 大于 2018-07-10 00:00:00 的所有数据
- q "{'source':'5','last_login_at':{$gt:'2018-07-10 00:00:00'}}"
导出 source 等于 3 或 source 等于 5 的所有数据
-q "{$or:[{'source':'3'},{'source':'5'}]}"
导出 source 等于 5 并且 last_login_at 大于 2018-07-10 00:00:00 或 last_login_at 小于 2018-06-20 00:00:00 的所有数据
- q "{'source':'5',$or:[{'last_login_at':{$gt:'2018-07-10 00:00:00'}},{'last_login_at':{$lt:'2018-06-20