MongoDB常用指令(学习笔记)
一、MongoDB常见类型
MongoDB常见类型 | 说明 |
---|---|
Object ID | 文档ID |
String | 字符串,最常用,必须是有效的UTF-8 |
Boolean | 存储一个布尔值,true或false |
Integer | 整数可以是32位或64位,这取决于服务器 |
Double | 存储浮点值 |
Arrays | 数组(js)或列表(python),多个值存储到一个键 |
Object | 用于嵌入式的文档,即一个值为一个文档 |
Null | 存储Null值 |
Timestamp | 时间戳 |
Date | 存储当前日期或时间的UNIX时间格式 |
二、数据库操作
1、显示所有数据库列表
show dbs
注意: 在 MongoDB 中,集合只有在内容插入后才会创建! 就是说,创建集合(数据表)后要再插入一个文档(记录),集合才会真正创建。如果没有插入数据,show dbs则查不到该数据库。
2、切换或创建数据库(如果数据库不存在,则创建数据库,否则切换到指定数据库。)
use 数据库名
3、删除数据库
db.dropDatabase()
三、集合操作
MongoDB 中默认的数据库为 test,如果你没有创建新的数据库,集合将存放在 test 数据库中。
1、创建集合
db.createCollection(集合名, [可选参数])
在 MongoDB 中,你不需要创建集合。当你插入一些文档时,MongoDB 会自动创建集合。
> db.mycol2.insert({"name" : "名字"})
> show collections
mycol2
2、查看集合
show collections/show tables
3、删除集合
db.collection.drop()
四、集合数据操作
1、新增
db.集合名.insert({“键名1”:值1, “键名2”: 值2 …})
例如:
db.test.insert({“name”:“张三”,“age”:18})
2、删除
db.集合名.remove({查询条件})
db.集合名.remove({}) # 删除全部数据
例如:
db.test.remove({“name”:“张三”})
db.test.remove({})
3、修改
3.1 Update
update() 方法用于更新已存在的文档。
db.集合名.update({查询条件}, {修改后结果}) #修改整行
db.集合名.update({查找条件}, {$set:{“要修改的字段名1”:修改后的值, “要修改的字段名2”: “值2”}}) #修改指定字段的值
3.2 Save
save() 方法通过传入的文档来替换已有文档,_id 主键存在就更新,不存在就插入。
db.集合名.save({查询条件})
例如:
db.test.update({“name”:“张三”}, {“name”:“张三”, “age”:25})
db.test.update({“name”:“张三”}, {$set:{“age”:26}})
4、查询
db.集合名.findOne() # 查询一行
db.集合名.find().pretty() # 格式化打印
db.集合名.find({查找条件}) # 条件查询,不带参数查全部
例如:db.test.find({“age”:18})
操作 | 格式 | 范例 | RDBMS中的类似语句 |
---|---|---|---|
等于 | db.col.find({"likes":"50"}).pretty() | where likes = "50" | |
小于 | {<key>:{\(lt:\<value>}} | db.col.find({"likes":{\)lt:50}}).pretty() | where likes < 50 | |
小于或等于 | {<key>:{\(lte:\<value>}} | db.col.find({"likes":{\)lte:50}}).pretty() | where likes <= 50 | |
大于 | {<key>:{\(gt:\<value>}} | db.col.find({"likes":{\)gt:50}}).pretty() | where likes > 50 | |
大于或等于 | {<key>:{\(gte:\<value>}} | db.col.find({"likes":{\)gte:50}}).pretty() | where likes >= 50 | |
不等于 | {<key>:{\(ne:\<value>}} | db.col.find({"likes":{\)ne:50}}).pretty() | where likes != 50 |
AND 查询
db.集合名.find({key1: value1, key2:value2})
相当于SQL中的: WHERE key1=value1 AND key2=value2;
OR 查询
db.集合名.find({$or: [{key1: value1}, {key2:value2}]}).pretty()
相当于 WHERE key1=value1 OR key2=value2;
AND 和 OR 联合使用
db.集合名.find({"key1": value1}, $or: [{"key2": "value2"},{"key3": "value3"}]}).pretty()
相当于 WHERE key1=value1 AND (key2=value2 OR key3=value3);
COUNT() 统计条数
统计时使用 count()函数即可,如果需要筛选也是在 find 方法中传筛选条件即可。
db.集合名.find().count();
$SIZE 数组元素个数
$size可以用它查询特定长度的数组
db.集合名.find({“键名”: {$size:num} })
$IN 和 \$NOT IN 包含
db.集合名.find({“键名”: {$in:[值1, 值2, 值3 …]} })
db.集合名.find({“键名”: {$nin:[值1, 值2, 值3 …]} })
$REGEX 正则表达式匹配
db.集合名.find({name: {$regex: /^B.*/}}); # 匹配以B开头的单词
$EXISTS 判断字段是否存在
db.集合名.find({“键名”: {$exist: true|false} })
当值为true时,\(exists匹配包含字段的文档,包括字段值为null的文档;当为false时,\)exists返回不包含对应字段的文档。
SKIP() 和 LIMIT() 方法
如果你需要在MongoDB中读取指定数量的数据记录,可以使用MongoDB的Limit方法,limit()方法接受一个数字参数,该参数指定从MongoDB中读取的记录条数。
db.集合名.find({key1: value1, key2:value2}).limit(NUMBER)
我们除了可以使用limit()方法来读取指定数量的数据外,还可以使用skip()方法来跳过指定数量的数据,skip方法同样接受一个数字参数作为跳过的记录条数。
db.集合名.find().limit(NUMBER).skip(NUMBER)
SORT() 排序方法
在 MongoDB 中使用 sort() 方法对数据进行排序,sort() 方法可以通过参数指定排序的字段,并使用 1 和 -1 来指定排序的方式,其中 1 为升序排列,而 -1 是用于降序排列。
db.集合名.find().sort({key:1})
CREATEINDEX() 索引方法
-
查看集合索引
db.col.getIndexes()
-
查看集合索引大小
db.col.totalIndexSize()
-
删除集合所有索引
db.col.dropIndexes()
-
删除集合指定索引
db.col.dropIndex("索引名称")