MongoDB怎么用?

栏目: 数据库 · 发布时间: 7年前

内容简介:MongoDB 是一个基于分布式文件存储的数据库。由 C++ 语言编写。旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。在高负载的情况下,添加更多的节点,可以保证服务器性能。

MongoDB简介

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

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

MongoDB属于NoSQL

在高负载的情况下,添加更多的节点,可以保证服务器性能。

MongoDB 旨在为WEB应用提供可扩展的高性能数据存储解决方案。

MongoDB 将数据存储为一个文档,数据结构由键值(key=>value)对组成。MongoDB 文档类似于 JSON 对象。字段值可以包含其他文档,数组及文档数组。

MongoDB怎么用?

类似于json的数据形式

MongoDB的主要特点

  • MongoDB 是一个面向文档存储的数据库,操作起来比较简单和容易。
  • 你可以在 MongoDB 记录中设置任何属性的索引 (如:FirstName="Sameer",Address="8 Gandhi Road")来实现更快的排序。
  • 你可以通过本地或者网络创建数据镜像,这使得MongoDB有更强的扩展性。
  • 如果负载的增加(需要更多的存储空间和更强的处理能力) ,它可以分布在计算机网络中的其他节点上这就是所谓的分片。
  • Mongo支持丰富的查询表达式。查询指令使用JSON形式的标记,可轻易查询文档中内嵌的对象及数组。
  • MongoDb 使用update()命令可以实现替换完成的文档(数据)或者一些指定的数据字段 。
  • Mongodb中的Map/reduce主要是用来对数据进行批量处理和聚合操作。
  • Map和Reduce。Map函数调用emit(key,value)遍历集合中所有的记录,将key与value传给Reduce函数进行处理。
  • Map函数和Reduce函数是使用Javascript编写的,并可以通过db.runCommand或mapreduce命令来执行MapReduce操作。
  • GridFS是MongoDB中的一个内置功能,可以用于存放大量小文件。
  • MongoDB允许在服务端执行脚本,可以用Javascript编写某个函数,直接在服务端执行,也可以把函数的定义存储在服务端,下次直接调用即可。
  • MongoDB支持各种编程语言:RUBY,PYTHON,JAVA,C++,PHP,C#等多种语言。
  • MongoDB安装简单。

NoSQL简介

NoSQL(NoSQL = Not Only SQL ),意即"不仅仅是SQL"。

在现代的计算系统上每天网络上都会产生庞大的数据量。

这些数据有很大一部分是由关系数据库管理系统(RDBMS)来处理。 1970年 E.F.Codd's提出的关系模型的论文 "A relational model of data for large shared data banks",这使得数据建模和应用程序编程更加简单。

通过应用实践证明,关系模型是非常适合于客户服务器编程,远远超出预期的利益,今天它是结构化数据存储在网络和商务应用的主导技术。

NoSQL 是一项全新的数据库革命性运动,早期就有人提出,发展至2009年趋势越发高涨。NoSQL的拥护者们提倡运用非关系型的数据存储,相对于铺天盖地的关系型数据库运用,这一概念无疑是一种全新的思维的注入。

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

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

下载安装MongoDB

官网链接    https://www.mongodb.com/download-center?jmp=nav

MongoDB怎么用?

MongoDB怎么用?

启动MongoDB

启动之前要先添加环境变量

MongoDB服务端启动的命令为mongod

配置数据存放的位置, 服务就可以正常的启动

我将配置放在专门的配置文件中

dbpath=E:\mongodb_data\data

启动时指定配置文件

mongod –config c:\mongodb\conf\master.cfg

MongoDB支持的数据类型

Object ID: 对象id
"_id" : ObjectId("5b151f8536409809ab2e6b26")

#"5b151f85" 代指的是时间戳,这条数据的产生时间
#"364098" 代指某台机器的机器码,存储这条数据时的机器编号
#"09ab" 代指进程ID,多进程存储数据的时候,非常有用的
#"2e6b26" 代指计数器,这里要注意的是,计数器的数字可能会出现重复,不是唯一的
#以上四种标识符拼凑成世界上唯一的ObjectID
#只要是支持MongoDB的语言,都会有一个或多个方法,对ObjectID进行转换
#可以得到以上四种信息

#注意:这个类型是不可以被JSON序列化的

String: 字符串,必须是utf-8 
db.table01.insertOne({"name": "sath"})

Boolean:布尔值,true 或者 false (这里有坑哦~在我们 Python 中 True False 首字母大写)
db.teble01.insertOne({"status": true})

Integer:整数 (Int32 Int64 你们就知道有个Int就行了 ,一般我们用Int32)
db.table01.insert({"age":parseInt("100")})    # 字符串会被转成int32

Double:浮点数 (没有float类型,所有小数都是Double)
默认是添加的所有的数数字都是Double

Arrays:数组或者列表,多个值存储到一个键 (list哦,大Python中的List哦)
db.table01.insert({"hobby":["python","go", "java"]})

Object:如果你学过Python的话,那么这个概念特别好理解,就是Python中的字典,这个数据类型就是字典
db.table01.insert({"1": {"name":"sath", "age":35}})

Null:空数据类型 , 一个特殊的概念,None Null
db.table01.insert({"is_null": null})

Timestamp:时间戳
db.table01.insert({"t_time":new Date().valueOf()})

Date:存储当前日期或时间unix时间格式 (我们一般不用这个Date类型,时间戳可以秒杀一切时间类型)
 db.table01.insert({"t_time":Date()})
 Mon Dec 24 2018 19:23:34 GMT+0800
 
 db.table01.insert({"t_time":new Date()})
 2018/12/24 下午19:23:19

MongoDB常用语法

增
1. db.table01.insert({"name":"wangjianwei", "age":22})    # 官方不推荐
# 官方推荐以下两种方式
2. 插入一条数据 
db.insertOne({"name":"zhangsan", "age":78})    # 会返回添加进去的对象
    {
        "acknowledged" : true,
        "insertedId" : ObjectId("5c2091e508d12e25ff01af8d")
    }
3. 插入多条数据
db.table01.insertMany([{"name":"zhangsan", "age":78},{"name":"lisi", "age":36}])
    {
        "acknowledged" : true,
        "insertedIds" : [
                ObjectId("5c20924e08d12e25ff01af8e"),
                ObjectId("5c20924e08d12e25ff01af8f")
        ]
    }

删
1. 删除所有
db.table01.remove({})

官方推荐写法
2. 删除一个
 db.table01.deleteOne({"hobby":{$all:["抽烟"]}})
 
3.删除所有匹配到的
db.table01.deleteMany({"hobby":{$all:["抽烟"]}})

4. 删除表
db.table01.drop()

改
语法格式:
db.collection.update(
   <query>,
   <update>,
   {
     upsert: <boolean>,
     multi: <boolean>,
     writeConcern: <document>
   }
)
query : update的查询条件
update : 要更新的内容
upsert : 可选,这个参数的意思是,如果不存在当前更新的记录,是否插入你要更新的值到数据中,默认是false,不插入。
multi : 可选,mongodb 默认是false,只更新找到的第一条记录,如果这个参数为true,就把按条件查出来多条记录全部更新。
writeConcern :可选,抛出异常的级别。

官方推荐的写法
更新第一条数据
db.table01.updateOne({"age":{$gt:70}}, {$set:{"age":0}})

更新所有的数据
db.table01.updateMany({"age":{$gt:70}}, {$set:{"age":0}})

1. 查询所有
db.table01.find()

2. db.table01.find().pretty()    # 当查询到的结果可读性更高
 
3. 根据条件查询
db.table01.find({"age":78})    # find后面可以跟条件

4. 多个条件之间使用and的关系
db.table01.find({"age":78, "name": "wangwu"})    # 多个条件之间是and的关系

 5. 多个条件之间使用or关系
db.table01.find({$or:[{"age":78},{"name":"zhangsan"}]}
多个条件放在列表中, 每一个条件是一个字典

6. and和or一块使用
db.table01.find({"addr":"ShangHai",$or:[{"name":"sath"},{"age": 88}]})

7. in条件查询
db.table01.find({"name": {$in: ["zhangsan", "sath"]}})
name的值在某个列表中

8. 比较大小的方法
    8.1 大于
    db.table01.find({"age": {$gt: 60}})
    8.2 大于等于
    db.table01.find({"age": {$gte: 53}})
    8.3 小于
    db.table01.find({"age": {$lt: 53}})
    8.4 小于等于
    db.table01.find({"age": {$lte: 36}})
    8.5 不等于
    db.table01.find({"age": {$ne: 53}})
    8.6 等于
    db.table01.find({"age": {$eq: 53}})
    db.table01.find({"age":53})
    8.7  

9. 
db.table01.find({"hobby":{$all:["喝酒", "烫头"]}})
# all: 包含列表中所有的条件的


10.模糊匹配
db.col.find({title:/教/})	# 模糊匹配
db.col.find({title:/^教/})	# 匹配开头
db.col.find({title:/教$/})	# 匹配末尾
 

参考:  http://www.runoob.com/mongodb/mongodb-intro.html


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Beginning XML with DOM and Ajax

Beginning XML with DOM and Ajax

Sas Jacobs / Apress / 2006-06-05 / USD 39.99

Don't waste time on 1,000-page tomes full of syntax; this book is all you need to get ahead in XML development. Renowned web developer Sas Jacobs presents an essential guide to XML. Beginning XML with......一起来看看 《Beginning XML with DOM and Ajax》 这本书的介绍吧!

JS 压缩/解压工具
JS 压缩/解压工具

在线压缩/解压 JS 代码

URL 编码/解码
URL 编码/解码

URL 编码/解码

MD5 加密
MD5 加密

MD5 加密工具