MongoDB
连接MongoDB Shell环境
连接到默认连接到本机,且不带用户名和密码:
> mongo
通过用户名和密码连接(-u+用户名 root是用户名):
> mongo -uroot
MongoDB概念
数据库(mysql):database(mongodb)
表(mysql):collections(集合 mongodb)
表数据(mysql):document(文档 mongodb)
列(mysql):field(字段)
操作
查看数据库
> show databases
简写:
```shell
> show dbs
选择切换数据库
数据库不存在也能使用use选择数据库,在向数据库中插入数据时才会创建数据库:
> use 数据库名
查看当前所在数据库
db就是代表 当前所在数据库
> db
创建数据库
数据库是在向其中插入数据时创建的:
> use test # 选择一个数据库,可以是不存在的
> db.stus.insert({"name": "Tom", "age": 18}) # 向数据库中插入一条数据 db表示当前数据库 stus表示collection(相当于表)
这样就创建了一个数据库test,并且test库中有一个集合stus。
查看集合
> show collections
删除数据库
> db.dropDatabase()
删除集合
删除集合,就是相当于删除Mysql数据库中的表
> db.集合名.drop()
插入文档
直接向文档中插入值:
db.集合名.insert(文档)
把文档中的值保存成一个变量后插入:
> document = ({"name": "Tom", "age": 18})
> db.stus.insert(document)
查看文档
find()列出所有文档:
> db.集合名.find()
findOne()列出第一个文档:
> db.集合名.findOne()
格式化查看文档:
> db.集合名.find().pretty()
带查询条件(AND):
> db.集合名.find(查询条件)
> db.stus.find({"name": "Mac"})
带查询条件(OR):
> db.集合名.find({$or:[{k1: v1}, {k2: v2}]})
> db.stus.find({$or:[{"name": "Mac"}, {"name": "Tom"}]}) # 查找name为Mac或Tom的数据
AND和OR一起使用:
# where k1 = v1 and (k2 = v2 or k3 = v3)
> db.集合名.find({k1: v1, $or:[{k2, v2}, {k3, v3}]})
更新文档
> db.集合名.update(条件, 更新内容, 不存在是否插入(默认false不插入,可省略), 是否全部更新(默认false只更新第一条记录,可省略))
例如把与{"name": "Tom"}
匹配的文档修改为{"name": "Tom", age: 20}
:
> db.stus.update({"name": "Tom"}, {"name": "Tom", age: 20})
删除文档
> db.集合名.remove(查询条件, {justOne: 是否删除一个默认false, writeConcern: 抛出异常的级别})
例如,删除所有{"name": "Tom"}
的文档:
> db.stus.remove({"name": "Tom"})
如果删除所有数据:
> db.stus.remove({})