## 1.打开环境配置文件
open .bash_profile
## 2.添加环境配置并保存
export PATH=$PATH:/usr/local/mongodb/bin
## 3.让刚才输入的命令生效
source .bash_profile
## 4.运行命令,查看mongodb版本
mongod -version
## 5.展示以下内容则表示安装成功
db version v4.4.17
Build Info: {
"version": "4.4.17",
"gitVersion": "85de0cc83f4dc64dbbac7fe028a4866228c1b5d1",
"modules": [],
"allocator": "system",
"environment": {
"distarch": "x86_64",
"target_arch": "x86_64"
}
}
## 1.进入mongodb目录
cd /usr/local/mongodb
## 2.创建data和log文件夹(名字可以是其他,不强制)
mkdir data log
## 3.由于读写权限的问题,需要给这两个文件夹赋予读写权限
sudo chown yuanyuan /usr/local/mongodb/data
sudo chown yuanyuan /usr/local/mongodb/log
## 1.⚠️当前的位置是/usr/local/mongodb, 所以这里的 --dbpath 是 data; --fork表示在后台运行 --logappend 表示追加
mongod --fork -dbpath data --logpath log/mongo.log --logappend
## 出现如下,则表示启动成功
about to fork child process, waiting until server is ready for connections.
forked process: 79014
child process started successfully, parent exiting
## 新开一个终端窗口
mongo
## 展示一个箭头则表示启动成功
## 打开浏览器输入: http://127.0.0.1:27017/
It looks like you are trying to access MongoDB over HTTP on the native driver port.
## 启动成功
## 接上面
## 1.切换到管理员
use admin
## 2.运行命令(参数可写可不写)
db.shutdownServer({force:true});
## 展示以下则关闭成功
server should be down...
## 通过浏览器访问 http://127.0.0.1:27017/ 拒绝连接
#数据库路径
dbpath=/usr/local/mongodb/data
#日志输出文件路径
logpath=/usr/local/mongodb/log/mongo.log
#错误日志采用追加模式,配置这个选项后mongodb的日志会追加到现有的日志文件,而不是从新创建一个新文件
logappend=true
#启用日志文件,默认启用
journal=true
#这个选项可以过滤掉一些无用的日志信息,若需要调试使用请设置为false
quiet=false
#是否后台启动,有这个参数,就可以实现后台运行
fork=true
#端口号 默认为27017
port=27017
#指定存储引擎(默认不需要指定)
#storageEngine=mmapv1
#开启认证
auth = true
## 启动命令
mongod -f /usr/local/mongodb/etc/mongodb.conf
## 启动成功,可在浏览器中验证
## 关闭服务时,按照上面的方式去关闭,会有问题。因为在配置文件中开启了认证 auth=true,想关闭的时候会报错,告知没有权限
## 解决很简单,没有权限就赋予一个权限
## 如果是新安装的mongodb,默认是没有用户的,所以我们来创建用户
mongo
## 创建用户
db.createUser({user: 'root', pwd: '123456', roles:[{role:'root',db:'admin'}]})
## 登陆用户
db.auth('root','123456')
## 显示 1 说明登陆成功
## 赋予权限
db.grantRolesToUser('root', [{role: 'hostManager',db:'admin'}])
## 关闭服务
db.shutdownServer({force:true});
show dbs
show database
use 数据库名
db
显示数据库中所有集合
show collections
use admin;
db.auth('root', 'xxxxxx');
db.< collection >.insert(doc)
db.stus.insert({"name":"sunwukong","age":18,"gender":"male"});
db.stus.insert([{"name":"a","age":18,"gender":"male"},{"name":"b","age":19,"gender":"male"}]);
db.< collection >.insertOne()
db.< collection >.insertMany()
db.< collection >.find()
db.< collection >.find({})
db.stus.find({_id: "123"});
db.< collection >.findOne()
db.< collection >.find()[0]
db.< collection >.find({}).count()
db.< collection >.find({}).length()
db.< collection >.update(查询条件,新对象)
db.stus.update({"name":"sunwukong"},{"age":28})
db.stus.update({"_id" : ObjectId("635812327c22648214e938ec")},{$set:{"name":"sunwukong","age": 28,"gender": "male","address": "动物园"}});
db.stus.update({"_id" : ObjectId("635812327c22648214e938ec")},{$unset:{"address": "动物园"}});
db.stus.update({"_id" : ObjectId("635812327c22648214e938ec")},{$unset:{"address": 1}});
修改一个文档
db.< collection >.update()
db.< collection >.updateOne()
修改多个文档
db.< collection >.update(查询条件, 新对象, multi: true)
db.< collection >.updateMany()
db.< collection >.replaceOne()
db.< collection >.remove()
db.< collection >.drop()
db.< collection >.deleteOne()
db.< collection >.deleteMany()
db.dropDatabase() – 删除数据库
# 执行慢
for(var i=1; i<=20000; i++){
db.nums.insert({num:i});
}
# 执行快
var arr=[];
for(var i=1; i<=20000; i++){
arr.push({num:i});
}
db.numbers.insert(arr);
db.nums.find({num: {$gt: 5000}});
db.nums.find({num: {$gt: 40, $lt: 50}});
db.nums.find().limit(10);
db.nums.find().skip(10).limit(10);
# 效果一样,MongoDB会自动调整skip和limit的位置
db.nums.find().limit(10).skip(10);
在MongoDB中可以通过内嵌文档的形式来体现出一对一的关系
db.wifeAndHusband.insert([
{
name:"黄蓉",
husband:{
name:"郭靖"
}
},{
name:"潘金莲",
husband:{
name:"武大郎"
}
}
]);
db.users.insert([{
username:"swk"
},{
username:"zbj"
}
}]);
db.order.insert([{
list:["苹果","香蕉","草莓"],
user_id:ObjectId("63595e4a7c22648214e938ed")
},{
list:["西瓜","荔枝"],
user_id:ObjectId("63595e4a7c22648214e938ed")
},{
list:["KFC","冰激淋"],
user_id:ObjectId("63595e4a7c22648214e938ee")
}]);
# 查找用户swk的订单
var user_id = db.users.findOne({username:"swk"})._id;
db.order.find({user_id:user_id});
db.teachers.insert([
{name:"洪七公"},
{name:"黄药师"},
{name:"龟仙人"}
]);
db.stus.insert([
{
name:"郭靖",
tech_ids:[
ObjectId("635acc257c22648214e938f2"),
ObjectId("635acc257c22648214e938f3")
]
},{
name:"周杰伦",
tech_ids:[
ObjectId("635acc257c22648214e938f2"),
ObjectId("635acc257c22648214e938f3"),
ObjectId("635acc257c22648214e938f4")
]
}
]);
# 按sal值升序来查询文档
db.emp.find({}).sort({sal:1});
# 按sal值降序来查询文档
db.emp.find({}).sort({sal:-1});
# 当sal一样时,
db.emp.find({}).sort({sal:1, empno:-1});
在查询时,可以在第二个参数的位置来设置查询结果的投影
db.stus.find({},{name:1});
db.stus.find({},{name:1, _id:0});