MongoDB(1)

来源:互联网 发布:linux怎么退出python 编辑:程序博客网 时间:2024/05/10 23:20

一. 基础
- 文档(document): 键值对的有序集
键:字符串,不可含\0(空字符),空字符用于表示键结束;特殊的.和$;区分大小写顺序;档内不可有重复键.
- 集合(collection):动态,不可含\0,不能以system开头.不应含$;子集合.号分隔
- 数据库:由于数据库终将变成文件系统中的文件,故其命名有很多限制;特殊库admin,local,config;
- 自带javascript shell,独立的client,连接会将库赋值给全局变量db

二. 增删改查
- 增:post={}(json); db.blog.insert(post);
批量batchInsert();(弱事务性) continueOnError(shell不支持,驱动程序都支持),数据校验交给了驱动程序做,仅做了最基本检查
- 删:db.blog.remove({title:”My Blog Post”});
清空drop()
- 改:post.comment = []; db.blog.update({title:”My Blog Post”},post)(添加新列)
db.blog.update({title:”My Blog Post”},{comment:[]})(替换collection)
**带id更新时,必须匹配唯一
- 查:db.blog.find()
db.blog.findOne()
**$lt,$lte,$gt,$gte,$ne,$in,$nin,$or,$not,$mod,$and,$exists,$all,$size,$slice
$where(慢)
- 修改器
- $set用来指定一个更新的字段,不存在则创建;删除$unset ;eg:db.blog.update({title:”My Blog Post”},{“$set”:{comment:[]}})(更新comment)
- $inc增加已有键的值或创建该键,仅能操作数值类型
- $push向已有数组末尾加元素或创建;each,;slice保留的元素
- $ne,$addToSet,
- $pop把数组看成栈,可从栈的任何一端删除元素;$pull从数组中删除所有匹配元素
- \修改数组中的元素,定位符$; eg:db.blog.update({“comments.author”:”john”},{“\$set”:{comments.\$.author”:”jim”}})
三. 数据类型(在json的基础上,添加了一些新的)
- null
- 布尔
- 数值(默认64位浮点型) 对于整形可用NumberInt,NumberLong
- 字符串
- 日期(json无) new Date() 日期 Date()日期字符串
- 正则表达式(json无)
- 数组 类型可不同
- 内嵌文档
- 对象id(文档的唯一标识,12字节的ID)ObejectId
- 二进制数据(不可直接在shell中使用)
- 代码

四. shell
- help的使用
- 查看函数,eg:db.foo.update
- 执行脚本,mongo script1.js(启动式);load(script1.js)交互式
辅助函数不可在js中使用,改用其对应的javascript函数.eg:use foo,db.getSisterDB(foo);show dbs,db.getMongo().getDBs();show collections,db.getCollectionNames();亦使用脚本将变量注入;
- 创建mongorc.js,其在启动shell时自动运行,重写
- shell中设置EDITOR=”/usr/bin/emacs(编辑器路径)”,可编辑变量,可用变量替换怪异的值

五. 查询(cursor)
- var cursor = db.blog.find();cursor.hasNext();cursor.next();cursor.forEach();
- limit
- skip(略过太多,性能差,不可分页)
- sort(混合类型默认顺序最小值,null,数字,字符串,对象,数组,二进制数据,对象id,布尔类型,日期型,时间戳,正则表达式,最大值)

0 0
原创粉丝点击