搜尋
首頁後端開發php教程MongoDB的技巧與注意事項彙總

Mongodb,分散式文件儲存資料庫,由C++語言編寫,旨在為WEB應用提供可擴展的高效能資料儲存解決方案。 MongoDB是一個高效能,開源,無模式的文檔型資料庫,是目前NoSql資料庫中比較熱門的一種。本文將和大家分享使用MongoDB時候遇到的問題的解決技巧,分享出來供大家參考學習。

一、尋找陣列欄位不為空的記錄

找出資料中陣列欄位不為空的記錄。

舉例:有以下Mongo文檔,

{
 "id" : "581c060f2b436c05aafb1632",
 "commit_history" : [ 
 "581c20d52b436c05aafb1633", 
 "581c21c12b436c05aafb1634"
 ]
},
{
 "id" : "581c060f2b436c05aafb1633",
 "commit_history" : []
}

想要查找commit_history不為空的記錄,有以下方法:

      方法一: db.collection.find ({commit_history: {$not: {$size: 0}}})

      方法二: db.collection.find({'commit_history.0': {$exists: 1}})

二、MongoDB新增用戶

在MongoDB中為一個Collection新增用戶,可以如下操作:

use collection_name 切換到某個庫

db.createUser(
 {
 user: "collection_name",
 pwd: "password",
 roles: [ "readWrite", "dbAdmin" ]
 }
)

三、有的時候需要刪除指定欄位那一列,使用update操作。

例如要刪除name這一列:

query  json:

{"name":{$exists:true}}

update json:

{$unset:{"name":""}}

四、資料匯出,在mongodb的bin目錄執行mongoexport指令並設定相關的參數

例如:

./mongoexport -h 192.168.0.201 --port 27017 –d admin –u admin –p admin -c department -o /home/admin/department.dat

-h:指定要連接的資料庫的ip;

--port:指定要連接的資料庫的連接埠;

-u:指定要連接的資料庫的使用者名稱;

-p:指定要連接的資料庫的使用者密碼;

-d:指定要連接的庫名;

-c:指定要匯出的資料集合;

-o:指定要匯出的資料目標存放位址;

註: (1)、需確保連線的資料庫處於正常運作狀態;

           (2)、我曾經遇到過一中情況,資料庫中加入了用戶信息,啟動時是沒有以用戶驗證的方式啟動,但是執行這個命令的時候,還是在我指定了用戶名和密碼的情況下才導出成功,如果有人遇到相似情況,不妨一試。

五、資料導入,在mongodb的bin目錄執行mongoimport指令並設定相關的參數,參數解釋和上邊一樣

例如:

./mongoimport --port 27017 -d admin -u admin –p admin –c department /home/common/mongodb305/bin/department.dat


#六、非amdin資料庫的用戶驗證問題:

我們為mongodb資料庫中的庫新增用戶,可以在目標資料庫中使用以下指令,例如在mongoTest庫中新增一個擁有讀寫權限的使用者: 

db.createUser({"user":"test","pwd":"123456","roles":["readWrite"]})


也可以在admin資料庫中新增: 

db.createUser({"user":"test","pwd":"123456","roles":[{"role":"readWrite","db":"test"},"readWrite"]})


要注意的是:這兩種方式是有區別的,也正是這個區別曾坑了我一把:

使用第一種方式添加的時候,我們可以在mongodb的bin目錄下直接執行如下命令進入test資料庫中操作,增刪改查都可以;也可以使用這個使用者  名和密碼在mongoVUE中連接:

./mongo -h 192.168.0.201 --port 27017 -u test -p 123456 -d test


但是如果是第二種方式創建的,那麼再直接使用上邊的命令,會提示驗證失敗,只有當先進入mongo shell連接到admin資料庫,再切換到test資料庫的時候才能驗證通過。這算是一個小坑,不明情況的或許會非常糾結,明明用戶名和密碼沒問題,卻不知為什麼就是連不上。

七、mongodb3.0預設的資料儲存方式還是原來2.6一樣的,我嘗試過更改為新的儲存方式,在啟動時使用以下參數,但需要注意的是,需要在資料庫中沒有資料的前提下才可以,否則會報錯:

./mongod -f /mongodb304/conf/mongodb.conf --storageEngine wiredTiger

mongodb.conf中配置了啟動的其他各種參數,如dbpath、logpath等。

以上內容就是MongoDB日常使用的技巧與注意事項彙總,希望能幫助大家。

相關推薦:

什麼是mongoDB資料庫

#phpstudy如何擴充MongoDB

#如何提升MongoDB的安全性

#

以上是MongoDB的技巧與注意事項彙總的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
可以在PHP會話中存儲哪些數據?可以在PHP會話中存儲哪些數據?May 02, 2025 am 12:17 AM

phpsessionscanStorestrings,數字,數組和原始物。

您如何開始PHP會話?您如何開始PHP會話?May 02, 2025 am 12:16 AM

tostartaphpsession,usesesses_start()attheScript'Sbeginning.1)placeitbeforeanyOutputtosetThesessionCookie.2)useSessionsforuserDatalikeloginstatusorshoppingcarts.3)regenerateSessiveIdStopreventFentfixationAttacks.s.4)考慮使用AttActAcks.s.s.4)

什麼是會話再生,如何提高安全性?什麼是會話再生,如何提高安全性?May 02, 2025 am 12:15 AM

會話再生是指在用戶進行敏感操作時生成新會話ID並使舊ID失效,以防會話固定攻擊。實現步驟包括:1.檢測敏感操作,2.生成新會話ID,3.銷毀舊會話ID,4.更新用戶端會話信息。

使用PHP會話時有哪些性能考慮?使用PHP會話時有哪些性能考慮?May 02, 2025 am 12:11 AM

PHP会话对应用性能有显著影响。优化方法包括:1.使用数据库存储会话数据,提升响应速度;2.减少会话数据使用,只存储必要信息;3.采用非阻塞会话处理器,提高并发能力;4.调整会话过期时间,平衡用户体验和服务器负担;5.使用持久会话,减少数据读写次数。

PHP會話與Cookie有何不同?PHP會話與Cookie有何不同?May 02, 2025 am 12:03 AM

PHPsessionsareserver-side,whilecookiesareclient-side.1)Sessionsstoredataontheserver,aremoresecure,andhandlelargerdata.2)Cookiesstoredataontheclient,arelesssecure,andlimitedinsize.Usesessionsforsensitivedataandcookiesfornon-sensitive,client-sidedata.

PHP如何識別用戶的會話?PHP如何識別用戶的會話?May 01, 2025 am 12:23 AM

phpIdentifiesauser'ssessionSessionSessionCookiesAndSessionId.1)whiwsession_start()被稱為,phpgeneratesainiquesesesessionIdStoredInacookInAcookInAcienamedInAcienamedphpsessIdontheuser'sbrowser'sbrowser.2)thisIdallowSphptpptpptpptpptpptpptpptoretoreteretrieetrieetrieetrieetrieetrieetreetrieetrieetrieetrieetremthafromtheserver。

確保PHP會議的一些最佳實踐是什麼?確保PHP會議的一些最佳實踐是什麼?May 01, 2025 am 12:22 AM

PHP會話的安全可以通過以下措施實現:1.使用session_regenerate_id()在用戶登錄或重要操作時重新生成會話ID。 2.通過HTTPS協議加密傳輸會話ID。 3.使用session_save_path()指定安全目錄存儲會話數據,並正確設置權限。

PHP會話文件默認存儲在哪裡?PHP會話文件默認存儲在哪裡?May 01, 2025 am 12:15 AM

phpsessionFilesArestoredIntheDirectorySpecifiedBysession.save_path,通常是/tmponunix-likesystemsorc:\ windows \ windows \ temponwindows.tocustomizethis:tocustomizEthis:1)useession_save_save_save_path_path()

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

EditPlus 中文破解版

EditPlus 中文破解版

體積小,語法高亮,不支援程式碼提示功能

Atom編輯器mac版下載

Atom編輯器mac版下載

最受歡迎的的開源編輯器

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3 英文版

SublimeText3 英文版

推薦:為Win版本,支援程式碼提示!