脚本交互操作
命令 | 描述 |
mongod --dbpath | 启动数据库 |
mongo | 连接数据库 |
help | 显示帮助 |
db.help() | 数据库级别的帮助 |
db.foo.help() | 集合的帮助 |
db | 显示当前数据库 |
show dbs | 显示所有数据库 |
show collections | 显示当前数据库的集合 |
show users | 显示当前数据库的用户 |
use dbname | 切换数据库 |
db.getCollection("name") | 得到数据库集合 |
db.CONNECTION_NAME.drop() | 删除名为CONNECTION_NAME的集合 |
|
|
db.test.find() | 查询集合所有文档 |
db.test.findOne() | 查询集合一个文档 |
db.test.find().limit(100) | 查询前100个文档 |
db.test.insert({}) | 在集合中添加新文档 |
db.test.update({},{}) | 在集合中更新文档 |
db.test.remove({}) | 在集合中删除文档 |
db.test.save(doc) | 同步doc文档到数据库 |
…… |
|
MongoDB数据类型
数据类型 | 描述 |
null | 表示空值或不存在 |
布尔 | true 或 false |
32位整数 | js不支持,在shell中转换为浮点数 |
64位整数 | js不支持,在shell中转换为浮点数 |
64位浮点数 | js支持 |
字符串 | UTF-8 |
符号 | js不支持,在shell中转换为字符串 |
对象id | 文档的12字节的唯一ID |
日期 | 从标准纪元开始的毫秒数,不存储时区 |
正则表达式 | 采用js正则表达式 |
代码 | 可以包含js代码 |
二进制数据 | shell中无法使用 |
最大值 | BSON包括一个特殊类型,表示可能的最大值 |
最小值 | BSON包括一个特殊类型,表示可能的最小值 |
未定义 | js中的undefined |
数组 | js中的[] |
内嵌文档 | js中{"s" : {"a" : "c"}} |
修改器
"$set"修改器
-
插入文档
db.test.insert({"name" : "liyongjie"})
-
使用修改器添加或修改
db.test.update({"name" : "liyongjie"} , {"$set" : {"age" : 22}}) //添加age为22
-
修改age
db.test.update({"name" : "liyongjie"} , {"$set" : {"age":23}}) //修改age为23
-
使用"$unset"移除age
db.test.update({"name":"liyongjie"} , {"$unset" : {"age" : 1}}) //移除age
"$inc"修改器
-
增加数字类型的字段
db.test.update({"name" : "liyongjie",{"$inc" : {"age" : 1}}}) //使用负数减少计数
-
查询时数据增加1
db.test.find()
数组修改器
-
"$push"
db.test.update({"name" : "liyongjie"} , {"$push" : {"friends" : "小红"}})
-
"$addToSet"
db.test.update({"name" : "liyongjie"} , {"$addToSet" : {"friends" : "小明"}}) //添加不重复的项
也可以使用"$ne"进行条件过滤,如下:
db.test.update({"friends" : {"$ne":"小明"}} , {"$push":{"friends":"小明"}})
-
"$each"
db.test.update({"name":"liyongjie"} , {"$push" : {"friends" : {"$each" : ["小花", "小李"]}}}) //连续添加多项
-
"$pop"
db.test.update({"name" : "liyongjie"},{"$pop" : {"friends" : 1}}) //从末尾删除数组中的一项
-
"$pull"
db.test.update({"name" : "liyongjie"} , {"$pull" : {"friends" : "小花"}}) //删除数组中匹配的项
-
定位操作符"$"
数组名称(如friends)点下标可以定位到数组某一项,点$可以匹配到第一项