MongoDB 啓動一個 mongo 實例 $ docker run --name some-mongo -d daocloud.io/mongo 因爲該鏡像的 Dockerfile 中包含了 EXPOSE 27017(mongo 默認端口),因此能夠經過 link 兩個容器來訪問它(就像下面的示例)。 docker run --name cool-mongo -p 27017:27017 -d mongo docker run --name mongo-serve1 -P -d mongo --- MongoDB客戶端工具: https://robomongo.org/download 啓動報錯: ./robo3t: /lib64/libc.so.6: version `GLIBC_2.16' not found (required by ./robo3t) ./robo3t: /lib64/libc.so.6: version `GLIBC_2.15' not found (required by ./robo3t) ./robo3t: /lib64/libc.so.6: version `GLIBC_2.14' not found (required by ./robo3t) ./robo3t: /lib64/libc.so.6: version `GLIBC_2.17' not found (required by ./robo3t) ./robo3t: /lib64/libz.so.1: version `ZLIB_1.2.3.4' not found (required by /home/sam/download/robo3t-1.2.1-linux-x86_64-3e50a65/bin/../lib/libQt5Gui.so.5) http://www.gnu.org/software/libc/ 下載列表: http://ftp.gnu.org/gnu/glibc/ 查看libc版本: ldd --version strings /lib64/libc.so.6 | grep GLIBC 安裝新版本glibc: wget http://ftp.gnu.org/gnu/glibc/glibc-2.18.tar.xz tar xvf glibc-2.18.tar.xz cd glibc-2.18 mkdir build cd build export LD_LIBRARY_PATH= ../configure --prefix=/opt/glibc-2.18 make sudo make install export LD_LIBRARY_PATH=/opt/glibc-2.18/lib 更新zlib: http://zlib.net/ 安裝個新版的zlib wget http://zlib.net/zlib-1.2.8.tar.gz tar zxf zlib-1.2.8.tar.gz cd zlib-1.2.8 ./configure --prefix=/opt/zlib-1.2.8 make && make install #cp /usr/local/lib/libz.so.1.2.8 /lib64/ #cd /lib64/ #rm libz.so.1 ln -s libz.so.1.2.8 /opt/glibc-2.18/lib/libz.so.1 ~/download/robo3t-1.2.1-linux-x86_64-3e50a65/bin$ ./robo3t 段錯誤 (core dumped) 仍是報錯,放棄,在windows上運行客戶端. --- 如下參考來自 https://dashboard.daocloud.io/packages 什麼是 MongoDB? MongoDB (源自 "humogous")是一個面向文檔的跨平臺數據庫。做爲一個 NoSQL 數據庫,MongoDB 避開了傳統關係型數據庫結構,轉而使用動態相似 JSON 的 BSON 格式,使其能輕鬆地將多個數據寫在同一類型中。MongoDB 以 AGPL 和 Apache License 聯合協議發佈。 MongoDB 最先由 10gen 軟件公司(如今爲 MongoDB 公司)於 2007 年 10 月時做爲 PaaS 服務的一個組件開始開發,然後在 2009 年該公司轉型爲開源模式並與 10gen 公司提供商業技術支持。以後 MongoDB 就被一些大型網站和服務商做爲後端軟件使用,包括 Craigslist、eBay、Foursquare、SourceForge、Viacom 和紐約時報等等。MongoDB 是當今最流行的 NoSQL 數據庫軟件。 wikipedia.org/wiki/MongoDB logo 如何使用本鏡像 因全部鏡像均位於境外服務器,爲了確保全部示例能正常運行,DaoCloud 提供了一套境內鏡像源,並與官方源保持同步。 啓動一個 mongo 實例 $ docker run --name some-mongo -d daocloud.io/mongo 因爲該鏡像的 Dockerfile 中包含了 EXPOSE 27017(mongo 默認端口),因此能夠經過 link 兩個容器來訪問它(就像下面的示例)。 在應用中鏈接該實例 $ docker run --name some-app --link some-mongo:mongo -d application-that-uses-mongo 使用 mongo 命令 $ docker run -it --link some-mongo:mongo --rm daocloud.io/mongo sh -c 'exec mongo "$MONGO_PORT_27017_TCP_ADDR:$MONGO_PORT_27017_TCP_PORT/test"' 相關配置 你能夠查閱官方文檔來了解如何配置 MongoDB 進行復制或分片操做。 你也能夠簡單地設置 --storageEngine 參數來指定你須要的儲存引擎(好比 MongoDB 3.0 中的 WiredTiger)。若是須要從舊版本升級的話,請確保你已熟悉此文檔。 $ docker run --name some-mongo -d daocloud.io/mongo --storageEngine wiredTiger 儲存數據的位置 摘要:下面介紹了多種儲存 Docker 容器中數據的方式,咱們鼓勵 mongo 鏡像用戶熟悉下面各項技術: 使用 Docker 自帶的 Volume 機制將數據庫文件寫入宿主機的磁盤。這是默認的方式,對用戶來說簡單且透明。缺點是宿主機上的工具或應用可能難以定位這些文件。 在宿主機上建立一個數據目錄(在容器外部)並把他掛載至容器內部。此時數據庫文件被放置在宿主機上一個已知的目錄裏,那樣容器外部的應用和工具就能夠方便地訪問這些文件。缺點是用戶須要確保這些目錄存在,且宿主機上正確配置了權限設置。 警告:因爲 MongoDB 使用了內存映射機制,所以當你使用 vboxsf 時會出現錯誤,這是一個已知的 bug (vbox bug)。 閱讀 Docker 文檔能快速瞭解不一樣的儲存選項,而且有不少博客或論壇討論並給出了這方面的建議。咱們會在下面簡單地演示一下: 在宿主機上建立一個數據目錄,例:/my/own/datadir。 使用下面的命令啓動 mongo 容器: $ docker run --name some-mongo -v /my/own/datadir:/data/db -d daocloud.io/mongo:tag 咱們經過 -v /my/own/datadir:/data/db 參數從宿主機掛載 /my/own/datadir 目錄至容器內做爲 /data/db 目錄,那樣 MongoDB 就會默認將數據文件寫入這個目錄中。 注意 SELinux 用戶可能會遇到一個問題,目前的解決方法是爲你的數據目錄指定相關的 SELinux 策略配置,那樣容器才能夠訪問它: $ chcon -Rt svirt_sandbox_file_t /my/own/datadir docker exec -it mongo-serve1 /bin/bash https://docs.mongodb.com/ecosystem/drivers/python/ http://api.mongodb.com/python/current/tutorial.html?_ga=2.97811103.1034840361.1523333005-2036341224.1523333005 Python MongoDB Drivers This is an overview of the available tools for using Python with MongoDB. Those wishing to skip to more detailed discussion should check out the Python Driver Tutorial. Python Driver PyMongo is the recommended way to work with MongoDB from Python. We recommend using pip to install pymongo on all platforms python -m pip install pymongo To get a specific version of pymongo: $ python -m pip install pymongo==3.5.1 To upgrade using pip: $ python -m pip install --upgrade pymongo import pymongo from pymongo import MongoClient client = MongoClient() client = MongoClient('localhost', 27017) client = MongoClient('mongodb://localhost:27017/') db = client.test_database db = client['test-database'] collection = db.test_collection collection = db['test-collection'] P66
使用數據庫名: use db_name db.users.insert({username: "dannis 吳"}) db.users.find() db.users.insert({username: "jones"}) 添加屬性: db.users.update({username: 'jones'}, {$set: {country:'Canada'}}) 刪掉屬性: db.users.update({username: 'jones'}, {$unset: {country:1}}) db.users.update({username: 'jones'}, {$set: { favorites:{ cities: ["Chicago","Cheyenne"], movies: ['Casablanca', "The String"] }}}) db.users.update({username: 'jones'}, {$set: { favorites:{ movies: ['Casablanca', "Rokey"] }}}) db.users.find({'favorites.movies':'Rokey'}) db.users.update({'favorites.movies':'Casablanca'}, {$addToSet: {'favorites.movies': 'The Maltese Falcon'} }, false,true ) db.users.update({'favorites.movies':'Casablanca'}, {$push: {'favorites.movies': 'The Maltese Falcon'} }, false,true ) 第4個參數true說明這是一個多項更新multi-update. $push會重複,$addToSet不會重複. 刪除集合裏的數據: db.users.remove({'favorites.movies':'The Maltese Falcon'}) db.users.remove() 刪除集合: db.users.drop() for(i=0;i<10000;i++){ db.numbers.save({num:i}); } db.numbers.count() db.numbers.remove({}) db.numbers.find({num:50}) db.numbers.find({num:{$gt:50}}) db.numbers.find({num:{$gt:50, $lt:60}}) 建立索引: db.numbers.ensureIndex({num:1}) 查看執行計劃: db.numbers.find({num:{$gt:50, '$lt':60}}).explain() 查看索引: db.numbers.getIndexes() 顯示數據庫列表: show dbs 顯示集合: show collections 啓動日誌: db.getCollection('startup_log').find({}) 顯示數據庫統計信息: db.stats() db.runCommand({dbstats:1}) { "db" : "tutorial", "collections" : 1, "views" : 0, "objects" : 100, "avgObjSize" : 35.0, "dataSize" : 3500.0, "storageSize" : 16384.0, "numExtents" : 0, "indexes" : 2, "indexSize" : 32768.0, "fsUsedSize" : 4803354624.0, "fsTotalSize" : 19308478464.0, "ok" : 1.0 } db.numbers.stats() db.runCommand({collstats:'numbers'}) http://www.cnblogs.com/phpfans/p/4852808.html MongoDB的寫安全機制 寫入安全(Write Concern)是一種由客戶端設置的,用於控制寫入安全級別的機制,經過使用寫入安全機制能夠提升數據的可靠性。 MongoDB提供四種寫入級別,分別是: (Unacknowledged)非確認式寫入 (Acknowledged)確認式寫入 (Journaled)日誌寫入 (Replica Acknowledged)複製集確認式寫入 W選項 0:非確認式寫入 1:確認式寫入 說明:這個級別下,對副本級只對主庫作確認寫入 2:副本級確認式寫入 說明:這個級別下,副本級第一個slave寫入成功後就響應給client majority:複製級更多slave寫入成功後,在響應給client print("======writeConcern的使用 - 非確認式寫入======") var result = db.wirte_concern.insert(doc1,{writeConcern:{w:0}}) printjson(result) print("======writeConcern的使用 - 確認式寫入======") var result = db.wirte_concern.insert(doc1,{writeConcern:{w:1}}) printjson(result) print("======writeConcern的使用 - 確認式寫入 + journaled + wtimeout======") var result = db.wirte_concern.insert(doc1,{writeConcern:{w:1,j:true,wtimeout:5}}) printjson(result)