1. 程式人生 > 實用技巧 >mongo-安裝配置和使用(常用指令)以及增刪改查

mongo-安裝配置和使用(常用指令)以及增刪改查

mongoDB 資料庫

一. 安裝 mongoDB

1. 官網地址:https://www.mongodb.com/
2. 選擇 custome
3. 修改安裝地址  C:\MongoDB
4. 修改環境變數  找到 bin 路徑  C:\MongoDB\bin 配置到全域性環境變數 

二. 啟動mongo

按照下列方法依此操作

1. 進入mongoDB 目錄 ,新建 data ,儲存資料
2. 進入 data, 在data內新建 db 資料夾 儲存資料庫資料
3. 執行 mongod --dbpath C:\MongoDB\data\db 
4. port 27017  瀏覽器輸入 http://localhost:27017/ 成功開啟
5. 新建cmd 輸入 mongo 進入mongoDB Shell

三. 建立 MongoDB 服務 (必須管理器許可權)

1. 切換到 Mongodb 的 data 下,新建一個log 資料夾 ,儲存登入日誌
2. 切換到 data 下的 log ,新建  一個檔案 mongo.log 儲存登入日誌
3. 切換到 C:\MongoDB 新建 mongo.config 配置檔案 
  dbpath=C:\MongoDB\data\db
  logpath=C:\MongoDB\data\log\mongo.log
4. 新建cmd  輸入  mongod --config C:\MongoDB\mongo.config (啟動mongodb)   
5. 建立 mongodb 服務 mongod --config C:\MongoDB\mongo.config --install --serviceName "MongoDB"   (必須管理員 )
6. 啟動 mongodb  服務 net start MongoDB  
net stop MongoDB   
SC delete MongoDB 刪除MongoDB  服務
檢視 services.msc

四. mognodb

MongoDB是一個基於分散式檔案儲存的資料庫。由C++語言編寫。旨在為WEB應用提供可擴充套件的高效能資料儲存解決方案。它的特點:高效能、易部署、易使用,儲存資料非常方便。

SQL mongodb
database database/db
table 表 collection 集合
row 行 document 文件
column 列 field 域名
index index
table join 不支援
primary key _id

1、collection 集合

集合存在於資料庫中,集合沒有固定的結構,這意味著你在對集合可以插入不同格式和型別的資料,但通常情況下我們插入集合的資料都會有一定的關聯性。

2、 document 文件

文件是一個鍵值(key-value)對(即BSON)。MongoDB 的文件不需要設定相同的欄位,並且相同的欄位不需要相同的資料型別,這與關係型資料庫有很大的區別,也是 MongoDB 非常突出的特點

資料型別

string
integer
boolean
double
array
max min(key)
timestamp
object
null
symbol

常用指令

mongo 進入mongodb Shell

show dbs 顯示所有的資料庫

db 檢視當前資料庫

db.getName()

use cd1706 建立或者切換資料庫

檢視命令提示

help

db.help()

db.test.help()

db.test.find().help()

顯示當前DB狀態

db.stats()

檢視當前DB版本

db.version()

檢視當前DB的連結機器地址

db.getMongo()

刪除資料庫

db.dropDatabase()

db.getName() == db

db.getCollectionNames() == show collections

db.createCollection("music");

show collections 顯示當前資料庫內的集合

db.emp.save() 儲存資料 如果第一次就是直接建立集合

db.userinfo.insert()

建立一個聚集集合

db.createCollection("collName", {size: 20, capped: true, max: 100});

db.collName.isCapped(); //判斷集合是否為定容量

得到指定名稱的聚集集合

db.getCollection("account");

得到當前db的所有聚集集合

db.getCollectionNames(); 返回是陣列

顯示當前db所有聚集的狀態

db.printCollectionStats();

MongoDB 增刪改查

查 find findOne

增 insert({},[]) insertOne insertMany save()

改 update updateOne updateMany

刪除 deleteOne deleteMany remove

插入

db.userinfo.insert()   db.userinfo.insert({username:"mingming"})  db.userinfo.insert([{username:"huahua"},{username:"pengzhan"}])
db.userinfo.insertOne() obj 只能插入一條資料
db.userinfo.insertMany()  array 只能接受陣列  
db.userinfo.save()  類似 insert 

修改 update

db.test.update(query,object);
db.user.update(
    {
    username:"wh1803"
    },
    {
    $set:{
    }
    
    }
)


db.userinfo.update({username:"mingming"},{
    $set:{
        password:"abc123"
    }
}
db.userinfo.update({password:"123"},{
    $set:{
        username:"zuozuomu"
    }
})
db.user.update(
{password:"abc123"},
{$set:{
    username:"dadazuo"
}}
)
修改第一條資料
db.userinfo.update({},{
    $set:{
        password:"abc123"
    }
})

db.userinfo.update({username:"cd1706"},{
    $set:{
        password:"abc123"
    }
},true);
能不能查詢到  (查不到)
true  查不到就直接插入
false 查不到就不插入   預設為false

修改多條資料 
db.userinfo.update({},{
    $set:{
        password:"abcd12456"
    }
},true,true);
true 表示修改滿足條件的所有資料    updateMany
false 表示修改滿足條件的第一條資料  updateOne  預設false

db.userinfo.updateOne({
},{
    $set:{
        age:28
    }
});
db.userinfo.updateMany({},{
    $inc:{
        age:12
    }
});

刪除 deleteOne

db.userinfo.deleteOne({
    username:"zuozuomu"
})      刪除一條資料 

db.userinfo.deleteMany()  刪除多條資料 
db.userinfo.remove(query)   刪除所有滿足條件 的 文件 
db.userinfo.remove(query,n);   表示刪除的資料量     n 只能刪除一條資料  第一條資料

db.userinfo.drop();  刪除集合 collection 

db.users.findAndModify({
    query: {age: {$gte: 25}}, 
    sort: {age: -1}, 
    update: {$set: {name: 'a2'}, $inc: {age: 2}},
    remove: true
});

db.userinfo.findAndModify({
    query:{username:"pengzhan"},
    sort:{age:-1},
    update:{
        $set:{
            tel:13812341234,
        },
        $inc:{
            age:16
        }
    },
    remove:false
})

查詢 find

db.userinfo.find() 查詢所有  select * from userinfo where password = "abc123";
db.userinfo.find({query},{field})    
db.userinfo.find({username:"pengzhan"})
db.userinfo.find({username:"pengzhan"},{username:1,_id:0,password:1});  1表示顯示 0不顯示
db.userinfo.find({age:24})

去重查詢

db.user.distinct("password")
select distinct password from user;

範圍查詢

$gt   great then > 大於
$gte  great then equal >= 大於或等於
$lt   less then  < 小於
$lte  less then equal <= 小於或等於

db.userinfo.find({
    age:{$gt:25}
})
db.userinfo.find({
    age:{$gt:20,$lte:30}
})

$set
$inc
$or  or  

db.user.find(
    {
        $or:[
            {
                username:"pengzhan"
            },
            {
                age:{
                    $lte:40
                }
            }
        ]
    },
    {
        _id:0
    }
)

模糊查詢 like

db.userinfo.find({username:/^hua/});
db.userinfo.find({username:/^hua$/});
db.userinfo.find({username:/hua4$/});
var txt = search  
new RegExp("+txt+"$")  
new RegExp("hua4$");
db.userinfo.find({username:new RegExp("^hua")}); //常用語句
db.movie.find({query},{field})  query 查詢條件  field 查詢的欄位
db.movie.find({},{title:1,year:1}) 
select title ,year from movie;
db.movie.find({},{title:1,year:1,_id:0}) 1 顯示 0 不顯示 
db.movie.find({},{title:1,_id:0,genres:1})
db.movie.find({},{title:1,_id:0,"rating.average":1})
db.movie.find({year:{$gt:"1994",$lt:"2017"}},{title:1,year:1,_id:0})
db.movie.find({year:"1994"},{title:1,year:1,_id:0,genres:1});
db.movie.find({"rating.average":{$gte:9.3}},{year:1,title:1,_id:0,'rating.average':1})
db.movie.find({"rating.average":{$gte:9.3},year:"1994"},{year:1,title:1,_id:0,'rating.average':1})
db.movie.find({},{year:1,title:1,"directors.name":1});

排序

db.movie.find({},{year:1,title:1,_id:0}).sort({year:1})  1 表示升序
db.movie.find({},{year:1,title:1,_id:0}).sort({year:-1})  -1 降序 
db.movie.find({},{year:1,title:1,_id:0,"rating.average":1}).sort({year:-1,"rating.average":-1})
db.movie.find({},{year:1,title:1,_id:0,"rating.average":1}).sort({year:-1,"rating.average":1})

限制條數 limit

db.movie.find({},{year:1,title:1,_id:0}).limit(10);

跳過 skip

db.movie.find({},{year:1,title:1,_id:0}).skip(5);
db.movie.find({},{year:1,title:1,_id:0}).skip(5).limit(10);
db.movie.find({},{year:1,title:1,_id:0}).limit(10).skip(5);

長度 條數 count 所有集合資料 size 滿足條件的集合資料

db.movie.find({},{year:1,title:1,_id:0}).size();
db.movie.find({},{year:1,title:1,_id:0}).count()
db.movie.find({},{year:1,title:1,_id:0}).skip(5).size();  
db.movie.find().skip(5).count() 

最大值

db.movie.find({},{year:1,title:1,_id:0}).max({"rating.average"})
db.movie.find({},{year:1,title:1,_id:0}).min({"rating.average"})

db.movie.aggregate({$group:{"_id":"min",min_value:{$min:'$year'}}})
db.movie.aggregate({$group:{'_id':"max",max_value:{$max:'$year'}}})
db.movie.aggregate({$group:{"_id":"year",max_value:{$max:"$year"}}})
db.movie.aggregate({$group:{"_id":"year",min_value:{$min:"$year"}}})
db.movie.aggregate({$group:{_id:"rating.average",max_value:{$max:"$rating.average"}}})

db.movie.find({},{year:1,title:1,_id:1}).sort({year:-1}).limit(1)

or $or 查詢

select * from userinfo where age = 22 or age =28;
select * from userinfo where age in (22,28);

db.movie.find({$or:[{year:"1994"},{year:"1997"}]},{year:1,title:1,_id:0})

and 查詢

db.movie.find({year:"1994","rating.average":9.6},{year:1,title:1,_id:0})

判斷 列 field 是否存在

db.movie.find({year:{$exists:true}},{year:1,title:1,_id:0})
db.movie.find({year11:{$exists:true}},{year:1,title:1,_id:0})

$in 包含

db.movie.find({genres:{$in:["犯罪"]}},{year:1,title:1,genres:1,_id:0})
#### in 
select * from movie where genres in [ "犯罪"]   /  [50,90]
#### $nin  不包含 
db.movie.find({genres:{$nin:["劇情"]}},{year:1,title:1,genres:1,_id:0})
in

$inc ++ update
db.movie.update({},{
    $inc:{
        year:"1"
    }
})