文档是 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. HTML的一些技巧

    清除form表单 this.$refs.formName.resetFields() 验证表单 this.$refs.createForm.validate((valid) => {}) 当im ...

  2. Tomcat各种日志的关系与catalina.out文件的分割

    Tomcat 各日志之间的关系 一图胜千言! 其他日志如localhost.{yyyy-MM-dd}.log.localhost-access.{yyyy-MM-dd}.log是context的名称, ...

  3. ES2020新特性记录

    1.可选链操作符 // oldlet ret = obj && obj.first && obj.first.second// newlet ret = obj?.fi ...

  4. 谈谈BEM规范(含代码)

    css规范之BEM规范 前言 引用一句经典名言在编程的世界里其中一件最难的事情就是命名,不管是设计到编程语言还是标记语言都会有命名的需求.今天聊的就是关于css的命名规范的发展过程以及演变. 命名的发 ...

  5. 好好编程BUAA_SE(组/团队) Scrum Meeting 博客汇总

    好好编程BUAA_SE(组/团队) Scrum Meeting 博客汇总 一.Scrum Meeting 1. Alpha Alpha阶段 第一次Scrum Meeting Alpha阶段 第二次Sc ...

  6. linux系统上国际化失败

    文章目录 一.需求: 二.出现的问题 三.代码结构 1.配置文件中的配置 2.java代码中的使用 四.解决方案 一.需求: 最近项目中有这么一个需求,当用户当前的语言环境是 中文时,导出的 exce ...

  7. stm32知识学习的先后顺序

    这里大概的罗列了一些学习STM32的内容,以及学习顺序.如果是新手的话,建议边看中文手册和学习视频;如果是已经入门的,个人建议自己做一个项目,不论项目大小,当然里面会涉及到自己已经学习过的,或者是自己 ...

  8. 用Python画如此漂亮的专业插图 ?简直So easy!

    本文整理自知乎问答,仅用于学术分享,著作权归作者所有.如有侵权,请联系我删文处理.多多转发,多多学习! 方法一 强烈推荐 Python 的绘图模块 matplotlib: python plottin ...

  9. Flink 实践教程:入门(1):零基础用户实现简单 Flink 任务

    作者:腾讯云流计算 Oceanus 团队 流计算 Oceanus 简介 流计算 Oceanus 是大数据产品生态体系的实时化分析利器,是基于 Apache Flink 构建的具备一站开发.无缝连接.亚 ...

  10. Register Abstraction(9)

    This post will explain how to use the UVM Register Abstraction Layer (RAL) to generate register tran ...