MongoDB 基礎入門 【vaynexiao】

windows

msi

官網下載msi安裝時,"install mongoDB compass" 不勾選
(當然你也可以選擇安裝它,可能需要很久的安裝時間,最好是不勾選,然後自己額外獨立安裝compass)
MongoDB將數據目錄存儲在 db 目錄下。但是這個數據目錄不會主動創建,我們在安裝完成後需要創建它。
請注意,數據目錄應該放在根目錄下((如: C:\ 或者 D:\ 等 )。
環境變量bin路徑添加到path,
cmd使用mongo查看版本
C 盤創建一個 data 的目錄然後在 data 目錄裏創建 db 目錄。
mongod啓動,在打開一個cmd輸入mongo,作爲客戶端連接

c:\>cd c:\
c:\>mkdir data
c:\>cd data
c:\data>mkdir db
c:\data>cd db
c:\data\db>
# 環境變量
MONGODB_HOME C:\Program Files\MongoDB
path C:\Program Files\MongoDB\Server\4.2\bin

mongod --dbpath 數據庫目錄 # 也可以通過命令自定義數據庫路徑
mongod --port 10086
mongod --dbpath dir --port 10086 # 啓動服務器
mongo # 啓動客戶端

mongo --host=ip  --連接指定ip的mongo庫

# 在bin同級路徑創建配置文件mongod.cfg
systemLog:
    destination: file
    path: c:\data\log\mongod.log
storage:
	dbPath: c:\data\db
# 管理員cmd配置爲後臺服務
mongod --config " C:\Program Files\MongoDB\Server\4.2\bin\mongod.cfg" --install --serviceName "MongoDB"

sc delete MongoDB
sc create mongodb binPath= "C:\Program Files\MongoDB\Server\4.2\bin\mongo.exe --service --dbpath c:\mongodb\data --logpath=c:\mongodb\log\mongodb.log --logappend --directoryperdb"
mongod --dbpath=C:\data\db  --logpath=C:\data\log\mongodb.log --install --serviceName "MongoDB"

zip

1,下載mongodb windows zip,進行解壓
2,新建一個db文件夾,作爲數據倉庫,在解壓後的文件夾bin路徑輸入cd命令:
mongod --dbpath 數據倉庫文件夾path
// 此時就已經啓動了服務,切記文件夾不可以動哦

2,此時可以瀏覽器輸入驗證是否已經啓動
localhost:27017

3,還可以使用配置文件方式啓動服務
新建一個文本文件,建議文件名:mongod.conf

然後在bin目錄下cmd輸入同樣的:mongod --dbpath 配置文件對象名

配置文件其實就是將path信息存爲文件而已,內容如下:

storage:
 dbPath: C:\Environment\mongodb-win32-x86_64-2012plus-4.2.3\data\db

注意:路徑前有一個空格,不然啓動報錯

4,指定端口號和ip進行啓動
啓動服務的前提下,cmd礦口不要關閉,從bin下新啓一個cmd窗口輸入:mongo豈可進入命令模式,命令如下:

mongo --host=localhost --port=27017

Linux

稍後整理

圖形工具

  • compass
    優點:還沒發現
    缺點:windows安裝msi包時可以順帶安裝這個,但是需要很久很久,還裝不好。。。。
    部分操作會新彈出一個窗口,頻繁關閉窗口很麻煩,比如insert操作,而且總感覺這軟件很卡

  • studio 3t for mongodb

  • manager for mongodb

基礎語法

admin庫 # 保存用戶和權限
local # 集羣時不會複製
config # 保存分片信息

show dbs/databases  # 查詢所有庫(未持久化的查不出來)
user dbname # 創建/使用指定的數據庫
show collections # 查詢所有集合
db # 查詢當前庫
db.dropDatabase() # 刪除當前庫
db.createCollection("collectionName") # 創建指定名字的庫


db.collectionName.insert( {}  )  
# 插入數據,沒有name庫時會隱式創建庫,等同於save方法; 如果沒有指定id,會自動插入id,根據時間戳生成的
# insertOne() insertMany()
ObjectId() # 生成id
db.collectionName.insertMany()     #批量插入
# 插入多條
for(var i=1; i<10000; i++){
    db.test.insert({name:i})
}
# 改進版
var arr = [];
for(var i=1; i<10000; i++){
    arr.push({name:i})
}
db.test.insert(arr)

db.collectionName.find()  # 查詢全部數據
db.collection.find({},{ename:1, _id:0, sal:1}) # 只顯示ename sal
db.collectionName.find( {k1:v1, k2:v2} )  # 查詢指定數據
db.collectionName.find( {userid:"1001"} )  # 根據條件查詢全部
db.collectionName.findOne() # 查詢單個,可帶條件,也叫投影查詢
db.collectionName.find().limit(2)     # 查出前2條
db.collectionName.find().limit(2).skip(3)  # 查前2條,跳過3條
# 翻頁 (頁碼-1)*pagesize pagesize
# limit skip sort位置前後在語法上沒有硬性規定,調換順序仍然有效,先sort
# 內嵌查找 屬性名必須加雙引號\單引號,不然報錯
db.collectionName.find({"hobby.movies":"hero"})
$push  # 內嵌修改,向數組添加某一個值,即使已存在也會成功
$addToSet # 等同於$push 但該元素已存在會失敗,類似javaset集合,不可重複
db.collectionName.find( {userid:{$eq:500}} )  # 查詢等於500
$gt $gte
db.collectionName.find( {userid:{$gt:500, $lt:600}} )  # 查詢大於500 且 小於600
db.collectionName.find( {$or: [{userid:{$gt:500}} , {userid:{$lt:600}}]} )  # 查詢大於500 or 小於600
$lt $lte




# 關聯查詢 find返回的是數組要麼findOne 要麼index
var u_name = db.test.findOne( {_id:ObjectId("5edb879f5bb71661181523dd")} ).name;
db.test.find({name:u_name})

db.name.update( {_id:"1"},{likename:NumberInt(1001)} )  
# 覆蓋修改(未修改的其他字段會消失):將id爲1的數據的likename字段修改爲1001,此處1001被函數轉爲整數
db.name.update(  {_id:"2"},{$set: {likename:NumberInt(1001)} }  ) 
# 局部修改(只修改指定修改內容的字段):增加 {$set: }
# $unset 刪除
# $inc
db.test.replaceOne({age:100},{name:1002}) # 也會修改數據,也會只剩下name屬性
db.name.updateOne 等同於 update # update根據條件可以查出多個,但只修改第一個
db.name.updateMany # 批量修改
# $inc sal低於1000的增加400
db.emp.updateMany( {sal:{$lte:1000}}, {$inc:{sal:400}} )
db.collection.update(
   <query>,
   <update>,
   {
     upsert: <boolean>,
     multi: <boolean>,
     writeConcern: <document>
   }
)



try{
	sql
}catch(e){
	print(e)
}

db.collectionName.drop() # 刪除當前集合
# db.collectionName.remove() 缺少條件無法執行
db.collectionName.remove(  {_id:"1"} )
db.collectionName.remove({})   # 全部清楚
db.collection.remove(
   <query>,
   {
     justOne: <boolean>,
     writeConcern: <document>
   }
)
db.dropDatabase() # 刪除數據庫

db.collectionName.count()  # 統計總數
db.collectionName.find().count()  # 統計總數
db.collectionName.count(  {userid:"1003"} )   # 條件統計
db.collectionName.find().sort(  {userid:1, usercode:-1} )  # 按照userid排序,1升序,-1降序;userid相同時按照usercode排序

# cmd中執行 注意json內容的key要帶雙引號,不然導入失敗
# --drop可選參數,導入前是否要清空
mongoimport --db test --collection test [--drop]--file C:\Users\vaynexiao\Desktop\1.json
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章