mongodb的安裝使用和pymongo基本使用

来源:http://www.cnblogs.com/liaohuiqiang/archive/2017/07/18/7201291.html
-Advertisement-
Play Games

(1) mongodb的安裝 下載tgz解壓後,需要添加相應的環境變數才能在終端直接啟動mongod。 mongodb數據存儲在/data/db中,需要手動創建目錄樹,同時mongod執行的時候如果許可權不夠(不能往/data/db寫東西),需要改一下許可權。 (2) mongod的啟動 之後就可以在終 ...


(1) mongodb的安裝

下載tgz解壓後,需要添加相應的環境變數才能在終端直接啟動mongod。

mongodb數據存儲在/data/db中,需要手動創建目錄樹,同時mongod執行的時候如果許可權不夠(不能往/data/db寫東西),需要改一下許可權。

vim ~/.bashrc
export PATH="~/download/mongodb-linux-x86_64-ubuntu/bin:$PATH"

mkdir -p /data/db

ls -l / 查看data目錄的許可權,發現擁有者可寫
ls -l /data 查看db目錄的許可權,發現擁有者可寫
chown -R "liaohuqiang" /data data下的所有文件的擁有者改為自己 

 

(2) mongod的啟動

之後就可以在終端上輸入mongod,這個時候就啟動了mongodb,但是這個時候是在終端運行著的,相當於一個前臺進程,在這個終端你不能做其它操作。

可以使用--fork選項,開啟後會回到終端交互,可以繼續做自己的事。

fork表示以守護進程的方式啟動mongodb,創建一個伺服器進程。fork要配合logpath使用,表示日誌信息輸出到哪個日誌文件。logappend表示以追加的方式寫入日誌文件。

當然還有別的啟動方式,目前還沒用到,暫時先不說。

mongod --fork --logappend ~/mongo.log --logappend 

 

(3)mongo的使用

啟動mongod後就可以在終端進入mongo進行相關資料庫操作

show dbs 顯示所有資料庫
use doctor 切換到某個資料庫"doctor", 不切換的話預設使用test

db.dropDatabase() 刪除資料庫
show collections 顯示所有集合 db.sample.
drop() 刪除集合 db.sample.insert({name:"pilgrimHui", label:"1"}) 插入一行記錄 db.sample.insert({...}) 如果文檔已存在,會更新_id,不存在則同insert db.sample.find({...}) 查找滿足條件的記錄,簡單的一些查詢條件見下麵
db.sample.find({...},{field1:1, field2:1}) 只找出某些欄位 db.sample.find() 查找sample集合所有記錄 db.sample.remove({...},1) 刪除滿足條件的記錄,參數1可選,代表只刪除1個 db.sample.remove({}) 刪除sample集合的所有記錄

 

(4) mongo里的update操作

db.collection.update(criteria, objNew, upsert, multi)
criteria: 查詢條件,理解為sql update語句where後面的
objNew: 更新操作,理解為sql update語句set後面的
upsert: 如果不存在查詢到的記錄,是否插入。預設false,不插入
multi: 是否更新多條。預設false,只更新第一條。

# 例如:把集合里所有記錄的status改為0
db.sample.update({"status": {$ne: 0} }, {$set: {"status":0}}, {multi: true})
或者
db.sample.update({"status": {$ne: 0} }, {$set: {"status":0}}, false,true)

 

(4) 幾個查詢操作符

$ne 不等
$gt 大於
$gte 大於等於
$lt 小於
$lte 小於等於
$in和$nin 是否在指定數組中
$all 是否全在指定數組中
$or 將數組中的多個鍵值對或運算
$slice:[1,2] 切片,取屬性值(數組)的某幾個
$size 該屬性值(數組)的長度
$exists:true 選擇該欄位存在的記錄
$not 對任何查詢操作符取非
$regex 使用正則表達式匹配

 

(5) 幾個更新操作符

{ $inc : { field : value } }
{ $set : { field : value } }
{ $unset : { field : 1} } 
{ $push : { field : value } } 追加,field要是數組
{ $pull : { field : value } }  和push相反
{ $pop : { field : 1 } } 刪除最後1個值
{ $pop : { field : -1  } } 刪除第1個值 
{ $currentDate: { <field1>: {$type:"date", ... } } 設定當前時間
{ $rename: {<field1>:<newName1>,<field2>:<newName2>,...} } 重命名欄位

 

(6) 用戶許可權設置

mongodb預設沒有帳號登錄,需要自己先添加帳號。

在admin資料庫添加的帳號為管理員帳號,在其它資料庫添加的帳號為普通用戶

用戶只能在用戶所在的資料庫登錄,包括管理員。

管理員只能在admin登錄認證後才能管理其它資料庫。

6.1 添加管理員帳號

use admin
db.system.users.find()
db.addUser('liaohuqiang','liaohuqiang')  添加管理員用戶,mongodb版本不同,可能會報錯,如果報錯找不到addUser則用下麵這個

db.createUser(
  {
    user: 'liaohuqiang',
    pwd: 'liaohuqiang',
    roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
  }
)

6.2 重新啟動mongod

創建成功後重啟mongod,這個時候開啟連接可以帶上--auth選項,代表驗證用戶許可權。

mongod --fork --logappend ~/mongo.log --logappend --auth

6.3 認證登錄

開啟後,直接mongo進去操作會受限,可以mongo連接時授權登錄;也可以連接進去後再認證。

mongo -u liaohuqiang -p --authenticationDatabase admin
mysql -h ip -u root -p 亂入,對比一下mysql的連接


mongo
use admin
db.auth('liaohuqiang', 'liaohuqiang')

6.4 關閉連接

認證登錄後就可以像之前那樣操作資料庫了,操作完後可以在admin資料庫關閉連接。

use admin 
db.shutdownServer() 關閉mongod

 

(7) pymongo的連接

import pymongo

client=pymongo.MongoClient('mongodb://username:password@ip')
db=client['doctor']
users=db["user"]


result= list(users.find( {'role':1}, {'_id':0} ) ) 選多個
result= users.find_one({"name":name}) 選單個

users.insert_one({"name":name}) 插一個,會自動生成主鍵

users.remove( {"name":name}, {"multi":True} ) 刪多個
users.update_one({'name':name},{'$inc':{'commitCount':1}}) 改一個

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • JB2/JB3/JB5/JB9版本: 1. 請修改 Launcher2/res/layout/qsb_bar.xml,如下:<include android:id="@+id/qsb_search_bar"layout="@layout/search_bar"android:visibility=" ...
  • 一、碎片的簡單用法(實現在一個活動中添加兩個碎片,並讓這兩個碎片平分活動空間) 1、新建一個FragmentTest項目; 新建一個左側碎片佈局left_fragment.xml,代碼如下:(只放置一個按鈕並水平居中顯示) 新建右側碎片佈局right_fragment.xml,代碼如下:(佈局背景設 ...
  • Android Studio 生成 Java Doc 出現“編碼GBK的不可映射字元”問題 錯誤的解決方案,複製粘貼一萬遍也是錯誤的,下麵是查找出來的,沒有用的解決方案(還有幾個,就例舉下麵這個): 這種坑人的、自己沒有試過的、浪費大家時間的方案就不要轉發了好嗎?不要轉發了好嗎?不要轉發了好嗎? 正 ...
  • 一、傳值分類 頁面傳值基本分為兩種:正向傳值和反向傳值。 二、傳值方式 傳值,最基本的無非就是代理傳值、通知傳值、block傳值等,還有大家經常用到的屬性傳值和單例傳值、存儲傳值等。 1、代理傳值 代理傳值,簡單明瞭、淺顯易懂,實際開發中也常用。 委托做的事情: 1.1、聲明委托變數 1.2 定義協 ...
  • 之前的文章,在上面建立完config之後,UIl通過 來初始化ImageLoader對象,之後就可以用ImageLoader來載入圖片。 這裡,採用到單例模式來獲取ImageLoader對象,保證他全局初始化一次。再上面的分析中,我們可以看出單例模式的好處,創建ImageLoader對象的時候需要創 ...
  • 1、待會兒會用到RecyclerView,首先在app/build.gradle(註意有兩個build.gradle,選擇app下的那個)當中添加依賴庫,如下: 添加完之後記得點擊Sync Now進行同步。 2、開始編寫主界面,修改activity_main.xml中的代碼,如下: Recycler ...
  • 一、還原數據與還原表空間 還原數據是: • 原始的、修改之前的數據副本 • 針對更改數據的每個事務處理而捕獲 • 至少保留到事務處理結束 • 用於支持: – 回退操作 – 讀取一致性查詢 – Oracle 閃回查詢、Oracle 閃回事務處理和 Oracle 閃回表 – 從失敗的事務處理中進行恢復 ...
  • 昨晚某現場報一個重建索引失敗的問題,遠程查看後發現是自動收縮的內部會話引發的鎖申請超時,突然想起來自己的加鎖實驗還沒完成索引重建部分,今天有空正好做一下: 先試了下聚集索引的重建,以下是相關會話的所有加鎖情況: 從以上的鎖分佈情況來分析,首先我們過濾掉所有非相關表的鎖,那麼整個結果集只剩下了6行: ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...