文档是 MongoDB 的核心,类似于 SQLite 数据库(关系数据库)中的每一行数据。多个键及其关联的值放在一起就是文档。在 Mongodb 中使用一种类 json 的 bson 存储数据,bson 数据可以理解为在 json 的基础上添加了一些 json 中没有的数据类型。
    例:
        {"company":"Chenshi keji"}
        
元数据
    数据库的信息存储在集合中,他们统一使用系统的命名空间:DBNAME.system.* DBNAME 可用 db 或数据库名替代
        DBNAME.system.namespaces :列出所有名字空间
        DBNAME.system.indexs :列出所有索引
        DBNAME.system.profile :列出数据库概要信息
        DBNAME.system.users :列出访问数据库的用户
        DBNAME.system.sources :列出服务器信息

创建数据库
    范例:进入 MongoDB 命令行操作界面之后,进行如下操作:
        > use Chenshi
        switched to db Chenshi
    
    您可以使用 db 命令查看您当前选择的数据库
        > db
        Chenshi

    您也可以通过使用 show dbs 命令查看所有的数据库
        > show dbs

    在这条命令之后您刚才创建的 Chenshi 不会显示,这只有在向数据库中插入了数据之后才能显示

删除数据库
    语法:db.dropDatabase()
    假设刚才我们使用语句 db.computer.insert({"name":"killer"}) 对数据库 Chenshi 进行了数据插入操作
        > show dbs      #显示当前系统中的所有数据库
        > use Chenshi   #转到Chenshi数据库
        switched to db Chenshi
        > db.dropDatabase()
        {"dropped":"Chenshi","ok":1}
        > show dbs

集合
    集合就是一组文档的组合,就相当于是关系数据库中的表,在 MongoDB 中可以存储不同的文档结构的文档。 例:
        {"company":"Chenshi keji"} {"people":"man","name":"peter"}    
        
    创建集合
        语法:
            db.createCollection(name,options)
        参数描述:
            name:创建的集合名称
            options:是一个作为初始化的文档(可选)
        范例:
            > db.createCollection("killer")            #无参数
            { "ok" : 1 }
            > show collections
            killer
            system.indexes
            > db.createCollection("killer2", { capped : 1, autoIndexID : 1, size : 6142800, max : 10000 } )            #带参数
            { "ok ": 1 }
        参数描述:
            capped:类型为 Boolean,如果为 true 则创建一个固定大小的集合,当其条目达到最大时可以自动覆盖以前的条目。在设置其为 true 时也要指定参数大小;
            autoIndexID:类型为 Boolean,默认为 false,如果设置为 true,则会在 _id field.s 上自动创建索引;
            size:如果 capped 为 true 需要指定,指定参数的最大值,单位为 byte;
            max:指定最大的文档数。 在 Mongodb 中也可以不用创建集合,因为在创建文档的时候也会自动的创建集合。

    删除集合
        语法:db.COLLECTION.drop()
        操作实例:
            > use Chenshi
            switched to db Chenshi
            > show collections
            killer
            killer2
            system.indexes
            > db.killer.drop()
            true
            > show collections
            killer2
            system.indexes
        删除成功
        --注意:当您要删除指定的集合时,用您想要删除的集合名称替代 COLLECTION 即可

    插入文档
        语法:db.COLLECTION_NAME.insert(document)
        操作实例:
            > userdoc1=({"user_id":1,"name":"cloud","state":"active","actor":"user","e-mail":"test@qq.com","VM_num":2,"time":[{"date":"2014-08-12","hour":"10:53 PM"}] })        
            > userdoc2=({"user_id":2,"name":"testadmin","state":"active","actor":"admin","e-mail":"test@qq.com","VM_num":2,"time":[{"date":"2014-08-11","hour":"06:34 AM"}] })    
            > doc1=({"name":"peter","position":"teacher"})        #先定义文档
            > use Chenshi
            switched to db Chenshi
            > db.killer.insert(userdoc1)
            WriteResult({"nInserted":1})
            > db.killer.insert(userdoc2)
            WriteResult({"nInserted":1})
            > db.killer.insert(doc1)
            WriteResult({"nInserted":1})
        插入文档成功,当然也可以直接将文档的内容作为函数的参数直接替代 document。
        
        语法:save()
            > db.users.save([
            ... { name : "jam",
            ... email : "jam@qq.com"
            ... },
            ... { name : "tom",
            ... email : "tom@qq.com"
            ... }
            ... ])

更新文档
    语法:db.COLLECTION_NAME.update(SELECTION_CRITERIA,UPDATED_DATA)
    操作实例:
        > db.killer.update({"user_id":2,"e-mail":"test@qq.com"},{$set:{"e-mail":"group@qq.com"}})
        WriteResult({"nMatched":1,"nUpserted":1,"nModified":1})
        > db.killer.find()
        
        将 user_id=2 的文档的 e-mail 改为 group@qq.com
        第一个大括号内容标示查找条件,第二个大括号内容则表示更新后的数据
        默认的 update 函数只对一个文档更新,如果想作用所有文档,则需要加入 multi:true
    操作实例:
        db.killer.update({"e-mail":"test@qq.com"},{$set:{"e-mail":"group@qq.com"}},{multi:true})

替换已存在的文档
    语法:db.COLLECTION_NAME.save({_id:ObjectId(),NEW_DATA})
    操作实例:
        >db.shiyanlou.save({"_id":ObjectId("53ea174ccb4c62646d9544f4"),"name":"Bob","position":"techer"})
        WriteResult({"nMatched":1,"nUpserted":1,"nModified":1})
    这里的 _id 对应的是要替换文档的 _id。
    跟 insert 差不多,但是 update 更好用。

删除文档
    语法:db.COLLECTION_NAME.remove(DELECTION_CRITERIA)
    操作实例:
        > db.shiyanlou.remove({"name":"Bob"})
        WriteResult({"nRemoved":1})
    其实 remove 函数的参数跟 update 函数的第一个参数一样,相当于查找条件,注意,不要误删!
    删除后可以用查找命令确认数据:
        > db.killer.find()
        
        
createCollection():创建集合

db.COLLECTION.drop():删除集合

db.COLLECTION_NAME.insert(document):插入文档

db.COLLECTION_NAME.update(SELECTION_CRITERIA,UPDATED_DATA):更新文档

db.COLLECTION_NAME.save({_id:ObjectId(),NEW_DATA}):替换已存在的文档

db.COLLECTION_NAME.remove(DELECTION_CRITERIA):删除文档

mongodb(一)的更多相关文章

  1. 【翻译】MongoDB指南/聚合——聚合管道

    [原文地址]https://docs.mongodb.com/manual/ 聚合 聚合操作处理数据记录并返回计算后的结果.聚合操作将多个文档分组,并能对已分组的数据执行一系列操作而返回单一结果.Mo ...

  2. 【翻译】MongoDB指南/CRUD操作(四)

    [原文地址]https://docs.mongodb.com/manual/ CRUD操作(四) 1 查询方案(Query Plans) MongoDB 查询优化程序处理查询并且针对给定可利用的索引选 ...

  3. 【翻译】MongoDB指南/CRUD操作(三)

    [原文地址]https://docs.mongodb.com/manual/ CRUD操作(三) 主要内容: 原子性和事务(Atomicity and Transactions),读隔离.一致性和新近 ...

  4. 【翻译】MongoDB指南/CRUD操作(二)

    [原文地址]https://docs.mongodb.com/manual/ MongoDB CRUD操作(二) 主要内容: 更新文档,删除文档,批量写操作,SQL与MongoDB映射图,读隔离(读关 ...

  5. 【翻译】MongoDB指南/CRUD操作(一)

    [原文地址]https://docs.mongodb.com/manual/ MongoDB CRUD操作(一) 主要内容:CRUD操作简介,插入文档,查询文档. CRUD操作包括创建.读取.更新和删 ...

  6. CRL快速开发框架系列教程十二(MongoDB支持)

    本系列目录 CRL快速开发框架系列教程一(Code First数据表不需再关心) CRL快速开发框架系列教程二(基于Lambda表达式查询) CRL快速开发框架系列教程三(更新数据) CRL快速开发框 ...

  7. MongoDB系列(二):C#应用

    前言 上一篇文章<MongoDB系列(一):简介及安装>已经介绍了MongoDB以及其在window环境下的安装,这篇文章主要讲讲如何用C#来与MongoDB进行通讯.再次强调一下,我使用 ...

  8. MongoDB系列(一):简介及安装

    什么是MongoDB MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统. 在高负载的情况下,添加更多的节点,可以保证服务器性能. MongoDB 旨在为应用提供可扩展的高 ...

  9. [原]分享一下我和MongoDB与Redis那些事

    缘起:来自于我在近期一个项目上遇到的问题,在Segmentfault上发表了提问 知识背景: 对不是很熟悉MongoDB和Redis的同学做一下介绍. 1.MongoDB数组查询:MongoDB自带L ...

  10. 用MongoDB分析合肥餐饮业

    看了<从数据角度解析福州美食>后难免心痒,动了要分析合肥餐饮业的念头,因此特地写了Node.js爬虫爬取了合肥的大众点评数据.分析数据库我并没有采用MySQL而是用的MongoDB,是因为 ...

随机推荐

  1. NOIP模拟66

    T1 接力比赛 解题思路 其实就是一个背包 DP ,也没啥好说的也就是一个优化,每次枚举之前的前缀和. 比较妙的就是一个 random_shuffle 可以整掉部分卡人的数据(但是好像 sort 一下 ...

  2. 前端开发3年了,竟然不知道什么是 Vue 脚手架?(下)

    上一篇文章<前端开发3年了,竟然不知道什么是 Vue 脚手架?(上)>介绍了什么是脚手架,以及Vue-cli 2.x如何创建项目,创建的项目结构.这篇文章介绍 Vue-cli 3.x 如何 ...

  3. Stream之高级函数

    上回文说到了有关Stream一些数学函数的用法.今天来说下Stream一些高级的函数用法,这些函数在日常工作中也是必不可少的,测试数据还是引用上一篇的数据. Map 这个方法我个人称之为转换函数,把一 ...

  4. WEB 标准以及 W3C 的理解与认识

    01.  WEB标准 ①  web标准 简单来说可以分为结构.表现和行为. ②  结构:主要是有HTML标签组成(通俗点说,在页面body里面我们写入的标签都是为了页面的结构)   表现:即指css样 ...

  5. Python3 网络通信 网络聊天室 文件传输

    Python3 网络通信 网络聊天室 文件传输 功能描述 该项目将实现一个文字和文件传输的客户端和服务器程序通信应用程序.它将传输和接收视频文件. 文本消息必须通过TCP与服务器通信,而客户端自己用U ...

  6. python T1119紧急措施

    2021-10-18 题目: 近日,一些热门网站遭受黑客入侵,这些网站的账号.密码及 email 的数据惨遭泄露.你在这些网站上注册若干账号(使用的用户名不一定相同),但是注册时使用了相同的 emai ...

  7. 「软件测试实战教程系列(三)」弃繁就简,接口测试神器Postman|收藏版

    软件测试实战教程系列(三)弃繁就简,接口测试神器Postman|收藏版 Postman主要帮我们干了三件事: 1.把相关集合放到一个集合当中方便管理. 2.对指定接口发送请求. 3.断言 下面我们使用 ...

  8. 第四代富士X100F操作学习

    前言 本文为自己通过B站的UP主[阿布垃机手册]整理.原视频地址:[阿布垃机手册][布瞎BB]富士 X100F 相机外部按键 拍人像自己的设置 [X100F相机光圈大小支持F2到F16+Auto]光圈 ...

  9. 【UE4 C++】 UnrealPak 与 Pak 的制作、挂载、加载

    简介 通过 UnrealPak,可以将资源打包成 Pak 文件 Pak文件是UE4游戏生成的数据包文件. Pak 之前一般先有 Cooked 步骤,将资源烘焙为对应平台支持的资源 一般打包后的项目使用 ...

  10. 【二食堂】Beta - 设计和计划

    Beta设计和计划 需求再分析 根据助教.老师.用户以及各个团队PM的反馈意见,我们的项目目前有以下问题: 功能不完整 实用价值不高 两方面的缺陷,所以在Beta阶段,我们工作的中心还是完成项目规划中 ...