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)

  

MongoDB Notes的更多相关文章

  1. MongoDB 3.0 Release Notes

    MongoDB 3.0支持WiredTiger存储引擎,提供可插拔存储引擎API,新增SCRAM-SHA-1认证机制,改进explain功能. 可插拔存储引擎API 允许第三方为MongoDB开发存储 ...

  2. 【翻译】MongoDB指南/引言

    [原文地址]https://docs.mongodb.com/manual/ 引言 MongoDB是一种开源文档型数据库,它具有高性能,高可用性,自动扩展性 1.文档数据库 MongoDB用一个文档来 ...

  3. [C#项目开源] MongoDB 可视化管理工具 (2011年10月-至今)

    正文 该项目从2011年10月开始开发,知道现在已经有整整5年了.MongoDB也从一开始的大红大紫到现在趋于平淡. MongoCola这个工具在一开始定位的时候只是一个Windows版本的工具,期间 ...

  4. 【先定一个小目标】Windows下安装MongoDB 3.2

    1.MongoDB 安装 官网提供了三个版本下载: - MongoDB for Windows 64-bit 适合 64 位的 Windows Server 2008 R2, Windows 7 , ...

  5. 从零开始学习Node.js例子八 使用SQLite3和MongoDB

    setup.js:初始化数据库 var util = require('util'); var async = require('async'); //npm install async var no ...

  6. MongoDB学习笔记六:进阶指南

    [数据库命令]『命令的工作原理』MongoDB中的命令其实是作为一种特殊类型的查询来实现的,这些查询针对$cmd集合来执行.runCommand仅仅是接受命令文档,执行等价查询,因此,> db. ...

  7. Mongodb Manual阅读笔记:CH4 管理

    4 管理 Mongodb Manual阅读笔记:CH2 Mongodb CRUD 操作Mongodb Manual阅读笔记:CH3 数据模型(Data Models)Mongodb Manual阅读笔 ...

  8. Ubuntu上安装MongoDB(译)

    add by zhj:直接从第四步开始就可以了,而且安装好MongoDB后会自动启动的,不必自己去执行启动命令 原文:https://docs.mongodb.com/manual/tutorial/ ...

  9. [译]MongoDb生产环境注意事项

    译注: 本文是翻译MongoDB Manuel中的MongoDB Production Notes一节内容.这节内容重点关注生产环境中影响性能和可靠性的各种注意事项,值得正在部署MongoDB的工作者 ...

随机推荐

  1. Python、进程间通信、进程池、协程

    进程间通信 进程彼此之间互相隔离,要实现进程间通信(IPC),multiprocessing模块支持两种形式:队列和管道,这两种方式都是使用消息传递的. 进程队列queue 不同于线程queue,进程 ...

  2. 大数据环境完全分布式搭建hbase-0.96.2-hadoop2

    1.上传hbase安装包 2.解压 3.配置hbase集群,要修改3个文件 (首先zookeeper集群已经安装好了 并且启动 hadoop启动) 注意:要把hadoop的hdfs-site.xml和 ...

  3. Java读取接口中的数据,并保存到txt文件中!

    //创建读取接口中数据的方法 public static String read() { URL url = null; BufferedReader reader = null; HttpURLCo ...

  4. BZOJ.5287.[AHOI HNOI2018]毒瘤(虚树 树形DP)

    BZOJ LOJ 洛谷 设\(f[i][0/1]\)表示到第\(i\)个点,不选/选这个点的方案数.对于一棵树,有:\[f[x][0]=\prod_{v\in son[x]}(f[v][0]+f[v] ...

  5. Python——lambda函数

    Lambda 函数又称匿名函数,匿名函数就是没有名字的函数,函数没有名字也行?当然可以啦.有些函数如果只是临时一用,而且它的业务逻辑也很简单时,就没必要非给它取个名字不可. 好比电影里面的群众演员,往 ...

  6. CRM项目(一)

    知识点: 1. 类可以当做字典的key 2. django中的model所在app名称.以及小写类名. 上述两点可以由以下代码实现: def index(request): # print(m1.Us ...

  7. [CC-CMPVIRS]Computer Virus

    [CC-CMPVIRS]Computer Virus 题目大意: 有一张纸带,从左到右被分成了\(n(n\le10^7)\)个格子,在刚开始,第\(i\)个格子上写着数字\(i\).这张纸带被分成了从 ...

  8. unity游戏设计与实现 --读书笔记(一)

    1,  游戏入门的一些知识点,游戏对象GameObject(角色), 组件Compoent(角色的功能),资源Asset(美术素材呵呵音频等的数据),场景Scene(用以放置各个角色,负责展示画面), ...

  9. 附近有什么?8款可以查周边的App

    如今科技发达的时代,手机的功能不仅仅只是能通讯聊天,而是逐渐的走进了人们的生活中.因为有了APP,我们的生活才更丰富,并且有很多是我们生活中不可缺少的软件,而这些软件便是根据手机中的GPS定位系统而来 ...

  10. SharePoint PowerShell 启动工作流

    前言 最近,有个需求,就是需要批量更新列表内容,平时这些操作,都用powershell去完成,但是,powershell需要在服务器上操作,而服务器权限需要通过客户的层层把关,所以,这次就考虑不用命令 ...