mongo
这个数据库内主要使用集合存数据,集合内可以有不同的字段,但是一般有关联的放在一起.
文档一般放着的是一组键值对,他可以使得相同字段里的内容数据不一样
linux的安装:sudo apt install mongodb 他的端口默认为27017
数据库的使用
数据库的创建
语法:use 数据库名
这表示没有这个数据库就创建,有这个数据库就进入,
mongodb一般语法都这样所以需要进入后查看下文档的内容,以免打错字母做无用功
数据库的删除
语法:db.dropDatabase()
这里默认当前数据库,所以你要先进入数据库
查看所有数据库
show dbs
查看当前数据库
db
da.getName()
> db.getName
function () {
return this._name;
}
查看数据库下的所有集合
show collections
退出数据库
exit
帮助文档
help
里面有各种文档帮助的命令,还可以进一步获取具体的帮助命令,他会列出所有帮助提示(英文)
其他命令
show users
show profile
show log
对于集合的增删改查
创建集合
一样插入即创建,有就直接插入,没有就创建后插入
db.setname.insert({键1:"值1",键2:"值2"})
插入多条,字段可以不一样,列入:
db.setname.insert({name:"jack",sex:"man"},{name:"Tom",age:18})
删除集合
db.setname.drop()
另一种save()插入方法
这个不常用,了解
save() 有两种用法
一、指定id 如果save()指定id就会认为是修改
二、不指定id 那么save()和insert()就没有区别
db.setname.save({"_id" : ObjectId("5d26b27cba286fde38ff3f41"),键1:"值1",键2:"值2"})
文档查询
db.setname.find()
选择查询
语法:db.setname.find(
query,
{
<key>:1,
<key>:1
}
)
例如:显示姓名,当age为12时
> db.student.find({age:12},{name:1})
{ "_id" : ObjectId("5d26b27cba286fde38ff3f41"), "name" : "yi" }
pretty()格式化显示文档(了解)
db.setname.find().pretty()
查询匹配结果的第一条语句
db.setname.findOne({age:12})
查询操作符
大于 -$gt
大于等于 - $gte
小于 - $lt
小于等于 - $lte
统计条数count()
db.setname.find().count()
可以正则查询,即
db.setname.find({name:/^Tom$/})
条件查询
and
db.setname.find( {条件1,条件2,……} )
or
db.集合名.find( {$or:[{条件1},{条件2},……] } )
二者联合使用
db.setname.find( { 条件1,条件2, $or:[{条件3},{条件4}] } )
limit、skip
limit()使用
db.setname.find().limit(5)
skip()使用
db.setname.find().skip(3)
联合使用
db.student.find().skip(3).limit(5)
这就类似于mysql的limit 3,5 实现先分页功能,只不过mongodb分开了而已
排序:
db.setname.find().sort({<key>:1|-1})
1表示升序,-1表示降序
这里要注意,没有这个字段一般升序是排在前面,并且文档字段不一样时会进行分开排序,
比如都有age,但是有的有name有的没有就会分开排序
文档更新
update()
db.setname.update(
query,
update,
{
upsert:<boolean>,
multi:<boolean>,
}
)
把年龄为28的Tom名字改为jack不存在者插入,找到多个就全改
db.setname.update({name:'Tom',age:28},{$set:{name:'jack'}},true,true)
文档删除
remove()
db.set.remove(
query,
{
justOne:<boolean>,
}
)
db.student.remove({name:"jack"},1)