• 0

    MongoDB Shell 常用操作

    jopen 10年前發布 | 73K 次閱讀 MongoDB NoSQL數據庫

     數組查詢

    數組查詢

    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


     查看集合占用空間

    查看集合占用空間

    > db.sessions.dataSize() 22658540

     監控和釋放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連接數

    查看 MongoDB 連接數

    > db.serverStatus().connections{ "current" : 10, "available" : 809 }

     進入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 shell
    MongoDB 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 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
     轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
     本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!
  • sesese色