基础执行命令
1.启动mongodb服务
sudo serice mongod start
2.配置文件路径
配置文件在/etc/mongod.conf 默认端口27017
3.停止,停止后输入将不能启动shell
sudo service mongod stop
4.重置服务
sudo service mongod restart
5.启动mongodb客户端
mongo
5.终端退出链接
exit或ctrl+c
6.查看当前数据库名称
db
7.所有数据库
show dbs
8.切换数据库
use 数据库名称
9.查看当前数据库信息
db.stats()
10.数据库删除
db.dropDatabase()
2.集合
1.创建集合
db.createCollection(name,options)
name 是要创建的集合的名称
options 是一个文档,用于指定集合的配置
2.限制集合大小
db.createCollection("stu")
3.限制集合大小
参数capped:默认值为false表示不设置上限, 值为true 表示设置上限
参数size:当capped值为true时,需要指定此参数,表示 上限大小,当文档达到上限时,会将之前的数据覆盖, 单位为字节
db.createCollection(
"sub",
{
capped : true,
size : 10,
max: 100,
}
)
4.查看数据库集合
show collections
5.删除集合
如果成功删除选定集合,则 drop() 方法返回 true,否则返回 false
db.集合名称.drop()
6.单条插入
db.集合名称.insert({name:'王明',gender:1})
注意:插入文档时,如果不指定_id参数,MongoDB会为文档分配一个唯一的ObjectId
7.多条插入
db.集合名称.insert(
[
{name:'王明',gender:1},
{name:'王玲玲',gender:0}
]
)
8.删
db.collection.remove(
<query>,
{justOne: <boolean>,}
)
query :(可选)删除的文档的条件。
justOne : (可选)如果设为 true 或 1,则只删除一个文档。
9.删除所有
db.集合名称.remove(document)
10.只删除1条,1表示是否只删除一条为true的意思
db.集合名称.remove(
document,1
)
db.集合名称.remove(
document,
{justOne:true}
)
3.改
1.update() 方法
update() 方法用于更新已存在的文档
db.集合名称.update(
<query>,
<update>,
{
upsert: <boolean>,
multi: <boolean>,
}
)
query : update的查询条件,类似sql update查询内where后面的。
update : update的对象和一些更新的操作符(如,inc...)等,也可以理解为sql update查询内set后面的
upsert : 可选,这个参数的意思是,如果不存在update的记录,是否插入objNew,true为插入,默认是false,不插入。
multi : 可选,mongodb 默认是false,只更新找到的第一条记录,如果这个参数true,就把按条件查出来多条记录全部更新。
2.全新文档更新
db.集合名称.update(
{name:'xxxxx'},
{name:'张xxx'}
)
3.指定属性更新,通过操作符$set
更新一条数据
db.stu.update(
{name:'李自成'},
{
$set:{name:'闯王李自成'}
}
)
更新多条数据
db.stu.update(
{name:'李自成'},
{
$set:{name:'闯王李自成'}
},
{multi:true}
)
2.save()方法
save()方法通过传入的文档来替换已有文档,如果文档的_id已经存在则修改,如果文档的_id不存在则添加
db.集合名称.save(document)
4.查询
1.find():查询,返回所有满足条件的数据
db.集合名称.find({条件文档})
2.findOne():查询,只返回第一个
db.集合名称.findOne({条件文档})
3.查询出姓名等于李某某的学生
db.集合名称.find({name:'李某某'})
db.集合名称.findOne({name:'李某某'})
比较运算符
- 等于,默认是等于判断,没有运算符
- 小于\$lt
- 小于或等于\$lte
- 大于\$gt
- 大于或等于\$gte
- 不等于\$ne
例:查询年龄大于或等于18的学生
db.集合名称.find({age:{$gte:18}})
逻辑运算符
例:查询年龄大于或等于18,并且性别为1的学生
db.集合名称.find(
{
age:{$gte:18},
gender:1
}
)
1.逻辑或:使用$or
例:查询年龄大于18,或性别为0的学生
db.集合名称.find(
{
$or:[
{age:{$gt:18}},
{gender:1}
]
}
)
2.and和or一起使用
例:查询年龄大于18或性别为0的学生,并且学生的姓名为gj
db.集合名称.find(
{
$or:[
{age:{$gte:18}},
{gender:1}
],
name:'gj'
}
)
3.范围运算符
使用"$in","$nin" 判断是否在某个范围内
例:查询年龄为18、28的学生
db.集合名称.find(
{
age:{$in:[18,28]}
}
)
4.正则表达式查询
使用//或$regex编写正则表达式
例:查询姓李的同学
db.stu.find({name:/^李/}
)
或
db.stu.find(
{
name:{$regex:'^李'}
}
)
5.limit() 方法
读取指定数量的数据记录
db.集合名称.find().limit(num)
6.skip() 方法
使用skip()方法来跳过指定数量的数据,skip方法同样接受一个数字参数作为跳过的记录条数。
db.集合名称.find().skip(num)
7.sort() 方法排序
sort()方法对数据进行排序,sort() 方法可以通过参数指定排序的字段,并使用 1 和 -1 来指定排序的方式,其中 1 为升序排列,而 -1 是用于降序排列。
升序
db.集合名称.find().sort({排序字段:1})
降序
db.集合名称.find().sort({排序字段:-1})
根据多个字段排序:
例:先根据年龄做降序,再根据性别做升序
db.集合名称.find().sort({age:-1,gender:1})
注意:skip(), limilt(), sort()三个放在一起执行的时候,执行的顺序是先 sort(), 然后是 skip(),最后是显示的 limit()。
8.distinct() 去重
db.集合名称.distinct('去重字段',{条件})
例:查找年龄大于20的姓名(去重)
db.集合名称.distinct('name',{age:{$gt:20}})
9.project投影
(可以指定想要返回的字段)
在查询到的返回结果中,只选择必要的字段,而不是选择一个文档的整个字段
例:参数为字段与值,值为1表示显示,值为0不显示
db.集合名称.find({},{字段名称:0,...})
10.count() 统计个数
db.集合名称.count({条件})