zoukankan      html  css  js  c++  java
  • MongoDB(一)


    一、MongoDB简介

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

    MongoDB是一个介于系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。它支持的数据结构非常松散,是类似jsonbson格式,因此可以存储比较复杂的数据类型。Mongo最大的特点是它支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引

    二、MongoDB特点

    1、其主要场景如下:

    1)网站实时数据处理。它非常适合实时的插入、更新与查询,并具备网站实时数据存储所需的复制及高度伸缩性。

    2)缓存。由于性能很高,它适合作为信息基础设施的缓存层。在系统重启之后,由它搭建的持久化缓存层可以避免下层的数据源过载。

    3)高伸缩性的场景。非常适合由数十或数百台服务器组成的数据库,它的路线图中已经包含对MapReduce引擎的内置支持。

    2、不适用的场景如下:

    1)要求高度事务性的系统。

    2)传统的商业智能应用。

    3)复杂的跨文档(表)级联查询。


    三、基本概念

    MongoDB中基本的概念是文档、集合、数据库,下表可以帮助更容易的理解MongoDB的概念:

    关系型数据库

    MongoDB

    数据库

    数据库

    集合

    文档

    字段

    Join

    内嵌文档

    主键

    主键,MongoDB自动将_id字段设置为主键

    (一)文档

    文档相当于关系型数据库中的行。它一组键值对,具有动态的模式,所以文档不需要设置相同的字段,并且相同的字段不需要相同的数据类型,这一点,跟关系型数据库有很大的不同。

    注:

    1. 文档中的键/值对是有序的。

    2. MongoDB区分类型和大小写。

    3. MongoDB的文档不能有重复的键。

    4. 键不能含有 (空字符)

    5. .$有特别的意义,只有在特定环境下才能使用。

    (二)集合

    集合相当于关系型数据库中的表。集合就是一组MongoDB文档。集合存在于数据库中,集合没有固定的结构,这意味着可以对集合插入不同格式和类型的数据,但通常情况下我们插入集合的数据都会有一定的关联性。

    注:

    1. 集合名不能是空字符串""

    2. 集合名不能含有字符(空字符),这个字符表示集合名的结尾。

    3. 集合名不能以"system."开头,这是为系统集合保留的前缀。

    4. 集合名用户创建的集合名字不能含有保留字符。有些驱动程序的确支持在集合名里面包含,这是因为某些系统生成的集合中包含该字符。除非你要访问这种系统创建的集合,否则千万不要在名字里出现$

    (三)数据库

    数据库是集合的实际容器。每一数据库都在文件系统中有自己的一组文件。一个 MongoDB 服务器通常有多个数据库。

    注:

    1. 不能是空字符串("")

    2. 不得含有' '(空格).$/ (空宇符)

    3. 应全部小写。

    4. 最多64字节。

    四、数据类型

    Object ID 文档的id

    String: 字符串,最常用,必须是utf-8

    Boolean:布尔值,true 或者false

    Integer:整数

    Double:浮点数

    Arrays:数组或者列表,多个值存储到一个键

    Object:用于嵌入文档,即一个值为一个文档

    Null:存储null

    Timestamp:时间戳

    Date:存储当前日期或时间unix时间格式



    Object ID

      每个文档都有一个属性,为_id保证文档的唯一性;

      可以自己去设置_id插入文档

      如果自己没设置,mongoDB为每个文档提供一个独特的_id ,是一个12字节十六进制数

          前4个字节为当前时间戳

          接下来的3个字节为机器ID

          接下来2个字节为mongo的服务进程ID

          最后3个是简单的增量值

    五、基本操作

    1、创建数据库:

    use <数据库名>

    如果数据库不存在,则创建数据库,否则切换到指定数据库

    2查看数据库

    show dbs

    3创建集合

    db.createCollection("集合名")

    4删除集合

    1show collections 查看当前数据库所有集合

    2db.集合名.drop()

    5插入文档数据

    db.集合名.insert(文档内容)

    6更新文档

                db.集合名.update(
                    <query>,
                    <update>,
                      {
                         upsert: <boolean>,
                         multi: <boolean>,
                         writeConcern: <document>
                      }
                  )

    参数说明:

    query : update的查询条件,类似sql update查询内where后面的。

    update : update的对象和一些更新的操作符(如$,$inc...)等,也可以理解为sql update查询内set后面的

    upsert : 可选,这个参数的意思是,如果不存在update的记录,是否插入objNew,true为插入,默认是false,不插入。

    multi : 可选,mongodb 默认是false,只更新找到的第一条记录,如果这个参数为true,就把按条件查出来多条记录全部更新。

    writeConcern :可选,抛出异常的级别。

    7删除文档

                  db.collection.remove(
                       <query>,
                       <justOne>
                    )

    参数说明:

    • query:(可选)删除的文档的条件。

    • justOne: (可选)如果设为 true 1,则只删除一个文档。

    • writeConcern:(可选)抛出异常的级别。

    8、查询文档

    db.collection.find(query, projection)



    参数说明:

    query :可选,使用查询操作符指定查询条件

    projection :可选,使用投影操作符指定返回的键。查询时返回文档中所有键值, 只需省略该参数即可(默认省略)。

    如果你需要以易读的方式来读取数据,可以使用 pretty() 方法,语法格式如下:

    >db.col.find().pretty()






  • 相关阅读:
    Python爬虫爬取网页图片
    Python爬虫爬取贴吧的帖子内容
    Android导入AS工程
    Arcgis for Silverlight学习(一)
    Silverlight学习笔记之页面跳转
    视频信号的垂直消隐和水平消隐[转]
    【DM642学习笔记八】色度重采样
    java从入门到卖肠粉系列
    [Selenium] Automation Test Manual(Selenium)
    [Selenium] Selenium私房菜(新手入门教程)
  • 原文地址:https://www.cnblogs.com/lone5wolf/p/10915334.html
Copyright © 2011-2022 走看看