文档至关于关系型数据库中的row。javascript
文档中的键值对是有序的。java
一个集合就至关于一个表。正则表达式
假设集合里面一个名为"type"的字段用于指明文档是水果仍是蔬菜,那么应该将这两种不一样类型的文档拆分红两个集合。shell
使用“.”分割不一样命名空间的子集合。在MongoDB中,使用子集合来组织数据很是高效,值得推荐。数据库
多个文档组成集合,多个集合组成数据库。数组
数据库名应所有小写。函数
数据库最终会变成文件系统中的文件,因此数据库名有不少限制。code
自带保留数据库:对象
对应“root”数据库,添加一个用户后,自动获取全部数据库权限。blog
永不可复制
存储分片信息
默认启动C:\data\db
目录,不存在会报错。
shell是一个功能完备的JavaScript
解释器,可运行JavaScript
程序。
Mongo可以使用JavaScript
标准库,定义和调用JavaScript
函数。
db.help()
查看数据库级别的帮助,db.foo.help()
查看集合级别的帮助。
> db.blog.insert({"name":"Rohan","date":new Date()})
shell会自动显示最多20个匹配的文档
update至少接受两个参数
Mongo在JSON包含的六种数据类型:null
、布尔、数字、字符串、数组和对象。的基础上新增了其余类型:
默认64位浮点型数值,整型eg:{"x" : NumberInt("3")}
{"x" : new Date()}
{"x" : /foobar/i}
能够包含不一样数据类型的元素
{"x" : ObjectId()}
能够包含任意JavaScript代码
db.foo.insert({"bar" : "baz"})
batchInsert
接收的参数是一个数组里面嵌套字典,此时会生成多个document,eg:
db.foo.batchInsert([{"name" : "Rohan"},{"sex": "None"}])
批量插入的最大消息为48MB,超过期,多数驱动程序会将这个请求拆分为多个48MB的请求。
批量插入时,某个文档失败时,以前插入的OK,后续的没法进行,若是指望忽略错误,可使用continueOnError
选项。
全部的文档必须小于16MB,Object.bsonsize(doc)
查看文档大小
db.foo.remove({"可选":"键值对"})
永久删除,不能撤销,不能恢复。
db.foo.drop()
速度更快
db.foo.update({"定位器":"value"},{新的集合})
此操做属于将新的文档彻底替换掉了目标文档,甚至包括_id
,固然_id
不能重复否则失败。千万当心使用!!!
$set
修改器指定定位器文档的一个字段的值,若是这个字段不存在,则建立;存在则更新:
do.foo.update({"user":"Rohan"},{"$set":{"最喜欢的语言":"Python"}})
注意此处$set
后面跟着一个字典,是一个嵌套文档。
$set
能够修改值的类型,从字符串变为list。
$set
能够修改嵌套文档,eg:
do.foo.update({"user":"Rohan"},{"$set":{"address.company":"山东"}})
$unset
能够将这个键彻底删除,eg:
do.foo.update({"user":"Rohan"},{"$unset":{"最喜欢的语言":1}})
$inc
数值修改器一样字段不存在,则建立;存在则在原有基础上增长,只能是数字,eg:
do.foo.update({"user":"Rohan"},{"$inc":{"Age":25}})