mongodb(一)
文档是 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(一)的更多相关文章
- 【翻译】MongoDB指南/聚合——聚合管道
[原文地址]https://docs.mongodb.com/manual/ 聚合 聚合操作处理数据记录并返回计算后的结果.聚合操作将多个文档分组,并能对已分组的数据执行一系列操作而返回单一结果.Mo ...
- 【翻译】MongoDB指南/CRUD操作(四)
[原文地址]https://docs.mongodb.com/manual/ CRUD操作(四) 1 查询方案(Query Plans) MongoDB 查询优化程序处理查询并且针对给定可利用的索引选 ...
- 【翻译】MongoDB指南/CRUD操作(三)
[原文地址]https://docs.mongodb.com/manual/ CRUD操作(三) 主要内容: 原子性和事务(Atomicity and Transactions),读隔离.一致性和新近 ...
- 【翻译】MongoDB指南/CRUD操作(二)
[原文地址]https://docs.mongodb.com/manual/ MongoDB CRUD操作(二) 主要内容: 更新文档,删除文档,批量写操作,SQL与MongoDB映射图,读隔离(读关 ...
- 【翻译】MongoDB指南/CRUD操作(一)
[原文地址]https://docs.mongodb.com/manual/ MongoDB CRUD操作(一) 主要内容:CRUD操作简介,插入文档,查询文档. CRUD操作包括创建.读取.更新和删 ...
- CRL快速开发框架系列教程十二(MongoDB支持)
本系列目录 CRL快速开发框架系列教程一(Code First数据表不需再关心) CRL快速开发框架系列教程二(基于Lambda表达式查询) CRL快速开发框架系列教程三(更新数据) CRL快速开发框 ...
- MongoDB系列(二):C#应用
前言 上一篇文章<MongoDB系列(一):简介及安装>已经介绍了MongoDB以及其在window环境下的安装,这篇文章主要讲讲如何用C#来与MongoDB进行通讯.再次强调一下,我使用 ...
- MongoDB系列(一):简介及安装
什么是MongoDB MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统. 在高负载的情况下,添加更多的节点,可以保证服务器性能. MongoDB 旨在为应用提供可扩展的高 ...
- [原]分享一下我和MongoDB与Redis那些事
缘起:来自于我在近期一个项目上遇到的问题,在Segmentfault上发表了提问 知识背景: 对不是很熟悉MongoDB和Redis的同学做一下介绍. 1.MongoDB数组查询:MongoDB自带L ...
- 用MongoDB分析合肥餐饮业
看了<从数据角度解析福州美食>后难免心痒,动了要分析合肥餐饮业的念头,因此特地写了Node.js爬虫爬取了合肥的大众点评数据.分析数据库我并没有采用MySQL而是用的MongoDB,是因为 ...
随机推荐
- Docker入门系列之五:15个 Docker 命令
在这篇文章中,我们将学习15个Dockers CLI命令.如果你还不了解Docker,请查看这个系列的其他部分进行学习,Docker概念,生态系统,Dockerfile,Docker镜像. Docke ...
- 踩坑系列《九》 无法获取实体类xxx对应的表名
话不多说,直接说明原因 类似于 @MapperScan(basePackages = "com.hyxiao.user.mapper") 启动类的mapper扫描注解的导入包正确的 ...
- efcore分表分库原理解析
ShardingCore ShardingCore 易用.简单.高性能.普适性,是一款扩展针对efcore生态下的分表分库的扩展解决方案,支持efcore2+的所有版本,支持efcore2+的所有数据 ...
- HttpClient遭遇Connection Reset异常,如何正确配置?
最近工作中使用的HttpClient工具遇到的Connection Reset异常.在客户端和服务端配置不对的时候容易出现问题,下面就是记录一下如何解决这个问题的过程. 出现Connection Re ...
- JVM学习笔记——方法区
方法区 Method Area 方法区在逻辑上属于堆的一部分,但可以看做是一块独立于 Java 堆的内存空间.所有的字段和方法字节码,以及一些特殊的方法,如构造函数,接口代码在此定义.所有定义方法的信 ...
- HashMap、ConcurrentHashMap红黑树实现分析
本文学习知识点 1.二叉查找树,以及二叉树查找带来的问题. 2.平衡二叉树及好处. 3.红黑树的定义及构造. 4.ConcurrentHashMap中红黑树的构造. 在正式分析红黑树之前,有必要了解红 ...
- javascript-jquery对象的其他处理
一.对元素进行遍历操作 如果要遍历一个jquery对象,对其中每个匹配元素进行相应处理,那么可以使用each()方法. $("div").each(function(index,e ...
- shell关键字含义
linux中shell变量$#,$@,$0,$1,$2的含义解释: 变量说明: $$ Shell本身的PID(ProcessID) $! Shell最后运行的后台Process的PID $? 最后运行 ...
- Linux主机入侵检测
检查系统信息.用户账号信息 ● 操作系统信息 cat /proc/version 用户信息 用户信息文件 /etc/passwd root:x:0:0:root:/root:/bin/bash 用户名 ...
- BUAA_2020_软件工程_结对项目作业
项目 内容 这个作业属于哪个课程 班级博客 这个作业的要求在哪里 作业要求 我在这个课程的目标是 掌握软件工程的思路方法 这个作业在哪个具体方面帮助我实现目标 学习结对编程 教学班级 006 项目地址 ...