mongodb
安装
Mac
brew install mongodb
Windows
https://www.mongodb.com/download-center/community
Ubuntu
【注意】如果系统中已经安装,千万别运行这个命令
sudo apt-get install mongodb
启动和关闭
启动
直接启动
sudo mongod
-
Data directory /data/db not found 数据库目录不存在

sudo mkdir /data sudo mkdir /data/db -
权限不够,需要添加 sudo mongod
-
虚拟机硬盘不够,导致mongodb需要的硬盘空间超过了虚拟机硬盘空间
sudo mongod --smallfiles
后台服务启动
【注意】只有在 sudo apt-get install mongodb情况下才能使用
sudo service mongodb start
关闭
-
直接使用快捷键关闭ctrl + C
-
登录到mongodb中进行关闭(推荐使用)
use admin db.shutdownServer() -
直接杀死进程(不推荐使用)
-
如果是后台服务的时候启动
sudo service mongodb stop
启动参数
- –dbpath 数据库路径设置数据库的路径,默认设置/data/db
- –port 设置数据库端口号,默认端口27017
- –auth 启动验证模式
- –bind_ip 设置允许访问的IP地址,默认127.0.0.1,如果设置成0.0.0.0表示所有IP都可以访问(调试模式下可以这么设置,生产环境千万别这么设置)
- –config 表示通过配置文件启动,在配置文件中可以配置mongodb的所有启动参数和运行参数
mongodb使用操作
数据库
查看数据库
show databases/dbs
进入数据库
use 数据库名称
显示当前进入的数据库
db
创建数据库
插入数据即创建数据库
删除数据库
use 数据库
db.dropDatabase()
集合(表)操作
前提条件,进入数据库
use 数据库
列出集合
show collections
创建集合
db.createCollection('集合名')
// 或
// 插入数据即创建集合
删除集合
db.集合名.drop()
重命名集合
db.集合名.renameCollection('新的集合名称')
数据操作
创建
// 单条插入,参数必须是一个json串
db.mycoll.insert({
"a":"x"
})
// 多条插入
data = [
{"b":"y"},
{"c":"z"}
]
db.mycoll.insertMany(data)
更新
【注意】默认更新是整体更新,局部更新在更新内容中把要更新的内容放置在$set的值中,默认情况下是只更新符合条件的第一条,如果需要批量更新需要添加更新方式multi
// 整体更新
db.stu.update(
// 更新条件
{
"hometown":"四川"
},
// 更新内容
{
"name":"哪都通"
}
)

// 局部更新
db.stu.update(
// 更新条件
{
"hometown":"南阳"
},
// 更新内容
{
$set:{
"name":"卧龙先生"
}
}
)

// 批量更新
db.stu.update(
// 更新条件
{
"hometown":"龙虎山"
},
// 更新内容
{
$set:{
"name":"python"
}
},
// 更新方式
{
multi:true
}
)

保存
通过_id寻找如果找到就执行更新,如果没有找到就执行插入
db.mycoll2.save({
"_id":3, // 如果_id没有被设置,会自动创建一个_id字段值 ObjectID(xxx) 构建
"a":"y"
})
删除
db.stu.remove(
// 删除条件
{
"hometown":"龙虎山"
},
// 删除方式
{
justOne:true
}
)

// 清空数据
db.stu.remove({})
查询
默认查询 并 的关系
db.stu.find(
// 查询条件
{
"hometown":"四川",
"gender":false
}
)

比较运算符
$gt 大于 ,
$gte 大于等于,
$lt 小于,
$lte 小于等于,
$ne 不等于
db.stu.find(
// 查询条件
{
"age":{$lt:30}
}
)

逻辑运算符
查询条件默认是并,使用或可用关键词 $or
db.stu.find(
// 查询条件
{
$or:[
{"hometown":"四川"},
{"gender":false}
],
age:{$lt:30}
}
)

范围运算符
i n , in, in,nin
db.stu.find(
// 查询条件
{
hometown:{$nin:["哪都通",'龙虎山']}
}
)

正则表达式
// 方式一
db.stu.find(
{
name:/^张/
}
)
// 方式二
db.stu.find(
{
name:{$regex:"^张"}
}
)

自定义查询
db.stu.find(
{
$where:function(){
// 1. 内部有个关键 this 表示当前记录
// 2. 返回值必须是 true(符合条件) 或 false(不符合条件)
return this.age > 30 && this.age < 44
}
}
)


被折叠的 条评论
为什么被折叠?



