MongoDB Shell 常用操作
數組查詢
數組查詢
MongoDB 中有子文檔的概念,一個文檔中能方便的嵌入子文檔,這與關系性數據庫有著明顯的不同,在查詢時,語法有一些注意點。
例子代碼,假如我們的一個集合(tests)中存在標簽鍵,有如下模式:
tags: [ObjectId]查詢含有某個標簽 ID 的文檔
db.tests.find({tags: tagId});我現在有一組標簽 tagIds,即是數組,需要查詢含有該數組中任一元素的文檔,此時需要用到 $in 操作符
db.tests.find({tags: {$in: tagIds}});如需唯一匹配該數組,與通常查詢無異
db.tests.find({tags: tagIds});如不考慮順序關系影響,即同時含有 tagIds 中的每個元素,用 $all
db.tests.find({tags: {$all: tagIds}});
MongoDB數據導出及導入
我目前用到的分別是 mongodump 和 mongorestore,他們語法挺相似。
導出
mongodump --host localhost:27017 /data/backup/csser.com/csser.3-9/表示將當前數據庫導出到 csser.3-9 目錄中去,導入用 mongorestore 即可恢復。
導入
mongorestore --host localhost:27017 /data/backup/csser.com/csser.3-9/表示將
csser.3-9
目錄下的數據導入到 MongoDB 中。安全停止并退出MongoDB
安全停止并退出 MongoDB
無論如何都要避免直接 kill -9
MongoDB 進程,如需正常安全的退出,向進程發送 SIGINT 或 SIGTERM 信號,如:
$ sudo kill -2 pid // SIGINT // 或 $ sudo kill pid // SIGTERM
監控和釋放MongoDB占用的內存
監控和釋放 MongoDB 占用的內存
查看內存使用情況:
PRIMARY> use csser switched to db csser PRIMARY> db.serverStatus().mem{ "bits" : 64, "resident" : 82, "virtual" : 5366, "supported" : true, "mapped" : 2463, "mappedWithJournal" : 4926 }釋放內存:
db.runCommand({closeAllDatabases:1})
查看MongoDB連接數
進入Shell
進入 Shell
通過 mongo 命令連接數據庫后,會自動進入 MongoDB Shell,默認連接的是 test 數據庫,進行如下操作了解 Shell 基本指令:
> help db.help() #查看 db 方法 db.mycoll.help() #查看集合方法 rs.help() #查看 replica set 方法 help admin #管理員幫助 help connect #連接數據庫幫助 help keys #快捷鍵幫助 help misc #了解 misc help mr #mapreduce show dbs #打印本服務器存在的數據庫名稱列表 show collections #打印當前數據庫的集合列表 show users #打印當前數據庫的用戶 show profile #打印 1s 內的 system.profile show logs #打印 logger 名稱 show log [name] #打印內存中最新的一條日志記錄,[name] 默認為 'global' use <db_name> #切換數據庫 db.foo.find() #列出集合 foo 中的對象列表 db.foo.find( { a : 1 } ) #列出集合 foo 中滿足條件 a== 1 的對象列表 it #查看 find 返回列表的其余部分 DBQuery.shellBatchSize = x #設置 shell 默認顯示的項的個數 exit #退出 mongodb shellMongoDB shell 內嵌了 Javascript 解析器,所以可以在其中書寫 Javascript 代碼。
連接數據庫
連接數據庫
mongo [options] [db address] [文件名 (以.js結尾)]
db address 可以只指定數據庫名(比如:csser),此時連接本地數據庫csser。
也可以這樣:192.169.0.5:27018/csser,表明連接192.169.0.5服務器27018端口的csser數據庫,端口號可以省略,默認為27017。
如果指定文件名,在不指定 --shell 參數的情況下,進程在執行完這些js文件之后會自動退出,文件名必須以.js結尾。
查看 MongoDB 版本:
mongo --version
在運行 mongo 命令時不自動連接數據庫:
mongo --nodb
本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!