MongoDB基本操作
MongoDB操作
创建数据库 :
use database_name
如果数据库不存在就创建数据库, 存在就切换到指定的数据库.
查看所有的数据库 :
show dbs
查看当前所在数据库 :
db
然而 :
上图中查看当前所在的数据库是: test, 但是show dbs时却没有test库. 这是因为test库是空的.
注意 : 在MongoDB中, 集合(表)只有在插入内容之后才会创建!!! 创建集合之后要再插入一个文档(记录), 集合才会真正的创建.
注意2 : MongoDB中默认的数据库为test, 如果没有创建新的数据库, 集合将存放在test数据库中.
删除数据库 :
db.dropDatabase()
删除当前数据库, 默认为test, 可以使用db命令查看当前所在的数据库.
创建集合(表) :
MongoDB中使用createCollection()方法来创建集合.
db.createCollection(name, options) #参数说明 # name : 要创建的集合名称 # options : 可选参数, 指定有关内存大小及索引的选项
options可以是如下参数 :
字段 | 类型 | 描述 |
capped | 布尔 |
(可选)如果为true, 则创建固定集合. 固定集合是指有着固定大小的集合, 当到达最大值时, 它会自动覆盖最早的文档. 当该值为true时, 必须指定size参数 |
autolndexld | 布尔 | (可选)如为 true,自动在 _id 字段创建索引。默认为 false |
size | 数值 | (可选)为固定集合指定一个最大值(以字节计)。 如果 capped 为 true,也需要指定该字段 |
max | 数值 | (可选)指定固定集合中包含文档的最大数量 |
在插入文档时, MongoDB首先检查固定集合的size子弹, 然后检查max字段
删除集合 :
MongoDB使用drop()方法删除集合
db.collection.drop()
返回值 :
如果成功删除选定集合, 则drop()方法返回true, 否则返回flase
增加和查看文档(数据) :
MongoDB使用insert()或者save()方法向集合中插入文档
db.COLLECTION_NAME.insert(document)
上图中d是集合名, 如果该集合不存在数据库中, MongoDB会自动创建该集合并插入文档
db.d.find()命令是查看文档的命令, 意思即为 : 查看d集合(表)的全部文档(数据)
也可以将预添加数据赋值给一个变量, 进行变量
# 官方推荐写法 # 插入单条数据 db.表名.insertOne({name:"xxx",age:xx}) # 插入多条数据 db.表名.insertMany([{name:"xxx",age:xx},{name:"xxx",age:xx}])
更新文档 :
MongoDB 使用 update() 和 save() 方法来更新集合中的文档
update()方法 :
db.collection.update( <query>, <update>, { upsert: <boolean>, multi: <boolean>, writeConcern: <document> } ) # 参数说明 # query : update的查询条件,类似sql update查询内where后面的。 # update : update的对象和一些更新的操作符(如$,$inc...)等,也可以理解为sql update查询内set后面的 # upsert : 可选,这个参数的意思是,如果不存在update的记录,是否插入objNew,true为插入,默认是false,不插入。 # multi : 可选,mongodb 默认是false,只更新找到的第一条记录,如果这个参数为true,就把按条件查出来多条记录全部更新。 # writeConcern :可选,抛出异常的级别
以上语句只会修改第一条发现的文档,如果你要修改多条相同的文档,则需要设置 multi 参数为 true
# 官方推荐写法 db.表名.updateOne({age:200},{$set:{name:"200",borthday:new Date()}}) # 将age=200的数据, 更新为name=200, borthday:new Date() db.表名.updateMany({age:{$gt:0}},{$set:{age:200}}) # 将年龄大于0的更新为年龄=200
save()方法 : 通过传入的文档来替换已有文档
db.collection.save( <document>, { writeConcern: <document> } ) # 参数说明 # document : 文档数据。 # writeConcern :可选,抛出异常的级别
删除文档(数据) :
MongoDB remove()函数是用来移除集合中的数据
MongoDB数据更新可以使用update()函数。在执行remove()函数前先执行find()命令来判断执行的条件是否正确,这是一个比较好的习惯
db.collection.remove( <query>, <justOne> ) # 如果MongoDB是2.6版本以上的, 语法为 : db.collection.remove( <query>, { justOne: <boolean>, writeConcern: <document> } ) # 参数说明 : # query :(可选)删除的文档的条件。 # justOne : (可选)如果设为 true 或 1,则只删除一个文档,如果不设置该参数,或使用默认值 false,则删除所有匹配条件的文档。 # writeConcern :(可选)抛出异常的级别
# 官方推荐写法 db.表名.deleteOne({name:"xxx"}) db.表名.deleteMany({name:"xxx"})
查询文档(数据) :
MongoDB 查询文档使用 find() 方法
find() 方法以非结构化的方式来显示所有文档
db.表名.find(query, projection) # 参数说明 # query :可选,使用查询操作符指定查询条件 # projection :可选,使用投影操作符指定返回的键。查询时返回文档中所有键值, 只需省略该参数即可(默认省略) -------------------------------------------------------------------------------- # 如果你需要以易读的方式来读取数据,可以使用 pretty() 方法,语法格式如下: db.表名.find().pretty() # pretty() 方法以格式化的方式来显示所有文档
MongoDB的and条件 :
MongoDB 的 find() 方法可以传入多个键(key),每个键(key)以逗号隔开,即常规 SQL 的 AND 条件
db.表名.find({key1:value1, key2:value2}).pretty()
---------------------------------------------------------------
类似于where语句: where key1=value1 and key2=value2
MongoDB的in条件 :
# 符合其中一个条件就好 db.表名.find({age:{$in: [1,2,3,4]}})
MongoDB的all条件 :
# 查询条件必须全部在被查询内容内 db.表名.find({age:{$all: [1,2,3,4]}})
MongoDB的or条件 :
MongoDB OR 条件语句使用了关键字 $or,语法格式如下
db.表名.find( { $or: [ {key1: value1}, {key2:value2} ] } ).pretty()
MongoDB条件操作符 :
条件操作符用于比较两个表达式并从mongoDB集合中获取数据
MongoDB中条件操作符有:
-
- (>) 大于 - $gt
db.表名.find({字段名: {$gt : 100}})
- (<) 小于 - $lt
db.表名.find({字段名: {$lt: 100}})
- (>=) 大于等于 - $gte
db.表名.find({字段名: {$gte : 100}})
- (<= ) 小于等于 - $lte
db.表名.find({字段名: {$lte : 100}})
- (>) 大于 - $gt