Wetts's blog

Stay Hungry, Stay Foolish.

0%

MongoDB-常用命令-增删改查

插入

db.collection.insert()

插入

存储在 MongoDB 集合中的每个文档(document)都有一个默认的主键 _id,这个主键名称是固定的,它可以是 MongoDB 支持的任何数据类型,默认是 ObjectId

查询

db.collection.find()

数组查询

名称 描述
$all 通过多个元素来匹配数组。
$size 查询特定长度的数组。
$slice 返回数组的一个子集合。

举例

db.food.find()

数据:

1
2
3
{ "_id" : "001", "fruits" : [ "苹果", "香蕉", "橘子" ] }
{ "_id" : "002", "fruits" : [ "苹果", "梨子", "橘子", "桃子" ] }
{ "_id" : "003", "fruits" : [ "圣女果", "梨子", "橘子", "桃子" ] }
$all

查询水果列表中既有苹果又有桃子的食品:db.food.find({"fruits":{"$all":["苹果","桃子"]}}) --这是AND的关系

结果:

1
{ "_id" : "002", "fruits" : [ "苹果", "梨子", "橘子", "桃子" ] }

查询水果列表中下标为1的元素是梨子的食品:db.food.find({"fruits.1":"梨子"})

结果:

1
2
{ "_id" : "002", "fruits" : [ "苹果", "梨子", "橘子", "桃子" ] }
{ "_id" : "003", "fruits" : [ "圣女果", "梨子", "橘子", "桃子" ] }
$size

数组包含3个元素的文档:db.food.find({"fruits":{"$size":3}})

结果:

1
{ "_id" : "001", "fruits" : [ "苹果", "香蕉", "橘子" ] }
$slice

返回lists后3个元素:db.test.find({},{"lists":{"$slice":-3}})

结果:

1
2
3
{ "_id" : "001", "fruits" : [ "苹果", "香蕉", "橘子" ] }
{ "_id" : "002", "fruits" : [ "梨子", "橘子", "桃子" ] }
{ "_id" : "003", "fruits" : [ "梨子", "橘子", "桃子" ] }

修改

语法

db.collection.update(<query>, <update>, upsert:<boolean>, multi:<boolean>)

参数 类型 描述
query document 要修改哪些的查询条件,类似于SQL 的 where
update document 要修改的字段对应的值
upsert boolean 可选的,默认值是false。如果根据查询条件没找到对应的文档,如果设置为true,相当于执行insert,如果设置为false,不做任何的操作。
multi boolean 可选的,默认值是false。如果根据查询条件找到对应的多条记录是,如果设置为false时,只修改第一条,如果设置为true,全部更新。

对单个字段进行修改

名称 描述
$inc 根据要添加的值递增该字段的值。
$mul 将该字段的值乘以指定的值
$rename 重命名字段
$setOnInsert 操作时,操作给相应的字段赋值
$set 用来指定一个键的值,如果不存在则创建它
$unset 用来指定一个键的值,如果不存在不创建创建它
$min 只有当指定的值小于现有字段值时才更新该字段。
$max 只有当指定的值大于现有字段值时才更新该字段。
$currentDate 设置当前日期字段的值,或者作为一个日期或时间戳。

对数组进行修改

名称 描述
$ 作为一个占位符的更新与查询条件在一个更新的第一要素
$addToSet 将元素添加到数组中,仅当它们在集合中不存在
$pop 删除数组的第一个或最后一个项
$pullAll 从数组中移除所有匹配值
$pull 移除匹配指定查询的所有数组元素
$pushAll 将所有值添加到数组中(Deprecated since version 2.4: Use the $push operator with $each instead.)
$push 将值添加到数组中,如果有的数组存在则向数组末尾添加该值,如果数组不存在则创建该数组并保存该值

删除

删除文档

db.collection.remove()

删除 orders 集合的数据,集合还存在,索引都还存在

删除集合

db.collection.drop()

集合、索引都不存在了