一、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() 索引方法

  1. 查看集合索引
    db.col.getIndexes()
  2. 查看集合索引大小
    db.col.totalIndexSize()
  3. 删除集合所有索引
    db.col.dropIndexes()
  4. 删除集合指定索引
    db.col.dropIndex("索引名称")