【MongoDB】初始 MongoDB

1、MongoDB概述

MongoDB 是一个基于分布式文件存储的数据库。由 C++ 语言编写。旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。

MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。

2、NoSQL概述

2.1、什么是NoSQL

NoSQL,指的是非关系型的数据库。NoSQL有时也称作Not Only SQL的缩写,是对不同于传统的关系型数据库的数据库管理系统的统称。

NoSQL用于超大规模数据的存储。(例如谷歌或Facebook每天为他们的用户收集万亿比特的数据)。这些类型的数据存储不需要固定的模式,无需多余操作就可以横向扩展。

2.2、NoSQL优缺点

优点

  • 高可扩展性
  • 分布式计算
  • 低成本
  • 架构的灵活性,半结构化数据
  • 没有复杂的关系

缺点

  • 没有标准化
  • 有限的查询功能

3、MongoDB术语

3.1、MongoDB和MySQL术语对照
MySQL术语MongoDB术语说明
databasedatabase数据库
tablecollection数据库表/集合
rowdocument数据记录行/文档
columnfield字段/域
indexindex索引
table joins表连接,MongoDB不支持
primary keyprimary key主键,MongoDB自动将_id字段设置为主键
3.2、MongoDB数据类型
数据类型描述
String字符串。存储数据常用的数据类型。在 MongoDB中,UTF-8 编码的字符串才是合法的。
Integer整型数值。用于存储数值。根据你所采用的服务器,可分为 32 位或 64 位。
Boolean布尔值。用于存储布尔值(真/假)。
Double双精度浮点值。用于存储浮点值。
Min/Max keys将一个值与 BSON(二进制的 JSON)元素的最低值和最高值相对比。
Array用于将数组或列表或多个值存储为一个键。
Timestamp时间戳。记录文档修改或添加的具体时间。
Object用于内嵌文档。
Null用于创建空值。
Symbol符号。该数据类型基本上等同于字符串类型,但不同的是,它一般用于采用特殊符号类型的语言。
Date日期时间。用 UNIX 时间格式来存储当前日期或时间。你可以指定自己的日期时间:创建 Date 对象,传入年月日信息。
Object ID对象 ID。用于创建文档的 ID。
Binary Data二进制数据。用于存储二进制数据。
Code代码类型。用于在文档中存储 JavaScript 代码。
Regular expression正则表达式类型。用于存储正则表达式。

4、MongoDB 操作

4.1、连接远程服务器的MongoDB数据库
mongo 123.206.190.194:27017/account_service -u root -p mYmongo$%123 --authenticationDatabase=admin
  • ip:port/db_name:指明远程服务器的ip地址、端口号、数据库名称
  • -u:指明数据库的用户名
  • -p:指明数据库的密码
4.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
}
4.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”。

5、查询

5.1、MongoDB与MySQL简单查询对比
操作MongoDB格式MongoDB示例MySQL示例
等于{<key>:<value>}db.getCollection('company').find({"source":"3"})where source = '3'
小于{<key>:{$lt:<value>}}db.getCollection('company').find({"last_login_at":{$lt:"2018-07-10 17:08:05"}}))where last_login_at < "2018-07-10 17:08:05"
大于{<key>:{$gt:<value>}}db.getCollection('company').find({"last_login_at":{$gt:"2018-07-10 17:08:05"}}))where last_login_at > "2018-07-10 17:08:05"
小于或等于{<key>:{$lte:<value>}}db.getCollection('company').find({"last_login_at":{$lte:"2018-07-10 17:08:05"}}))where last_login_at <= "2018-07-10 17:08:05"
大于或等于{<key>:{$gte:<value>}}db.getCollection('company').find({"last_login_at":{$gte:"2018-07-10 17:08:05"}}))where last_login_at >= "2018-07-10 17:08:05"
不等于{<key>:{$ne:<value>}}db.getCollection('company').find({"source":{$ne:"3"}})where source != "3"
and(且){<key>:<value>},{<key>:<value>}db.getCollection('company').find({"source":"5","last_login_at":{$gt:"2018-07-10 00:00:00"}})where source = "3" or source = "5" and last_login_at > "2018-07-10 00:00:00"
or(或){$or:[{<key>:<value>},{<key>:<value>}]}db.getCollection('company').find({$or:[{"source":"3"},{"source":"5"}]})where source = "3" or source = "5"
and 联合 or{<key>:<value>,$or:[{<key>:<value>},{<key>:<value>}]}db.getCollection('company').find({"source":"5",$or:[{"last_login_at":{$gt:"2018-07-10 00:00:00"}},{"last_login_at":{$lt:"2018-06-20 00:00:00"}}]})where source = 5 and (last_login_at > "2018-07-10 00:00:00" or last_login_at < "2018-06-20 00:00:00")
5.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 00:00:00'}}]}"

转载于:https://my.oschina.net/zobeen/blog/2250154

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值