热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

mongoDB使用手册

2019独角兽企业重金招聘Python工程师标准1、基本操作db.AddUser(username,password)添加用户db.auth(usrename,passwor

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

1、基本操作
db.AddUser(username,password) 添加用户
db.auth(usrename,password) 设置数据库连接验证
db.cloneDataBase(fromhost) 从目标服务器克隆一个数据库
db.commandHelp(name) returns the help for the command
db.copyDatabase(fromdb,todb,fromhost) 复制数据库fromdb---源数据库名称,todb---目标数据库名称,fromhost---源数据库服务器地址
db.createCollection(name,{size:3333,capped:333,max:88888}) 创建一个数据集,相当于一个表
db.currentOp() 取消当前库的当前操作
db.dropDataBase() 删除当前数据库
db.eval_r(func,args) run code server-side
db.getCollection(cname) 取得一个数据集合,同用法:db['cname'] or
db.getCollenctionNames() 取得所有数据集合的名称列表
db.getLastError() 返回最后一个错误的提示消息
db.getLastErrorObj() 返回最后一个错误的对象
db.getMongo() 取得当前服务器的连接对象get the server
db.getMondo().setSlaveOk() allow this connection to read from then nonmaster membr of a replica pair
db.getName() 返回当操作数据库的名称
db.getPrevError() 返回上一个错误对象
db.getProfilingLevel()
db.getReplicationInfo() 获得重复的数据
db.getSisterDB(name) get the db at the same server as this onew
db.killOp() 停止(杀死)在当前库的当前操作
db.printCollectionStats() 返回当前库的数据集状态
db.printReplicationInfo()
db.printSlaveReplicationInfo()
db.printShardingStatus() 返回当前数据库是否为共享数据库
db.removeUser(username) 删除用户
db.repairDatabase() 修复当前数据库
db.resetError()
db.runCommand(cmdObj) run a database command. if cmdObj is a string, turns it into {cmdObj:1}
db.setProfilingLevel(level) 0=off,1=slow,2=all
db.shutdownServer() 关闭当前服务程序
db.version() 返回当前程序的版本信息

 

2、数据集(表)操作
db.test.find({id:10}) 返回test数据集ID=10的数据集
db.test.find({id:10}).count() 返回test数据集ID=10的数据总数
db.test.find({id:10}).limit(2) 返回test数据集ID=10的数据集从第二条开始的数据集
db.test.find({id:10}).skip(8) 返回test数据集ID=10的数据集从0到第八条的数据集
db.test.find({id:10}).limit(2).skip(8) 返回test数据集ID=1=的数据集从第二条到第八条的数据
db.test.find({id:10}).sort() 返回test数据集ID=10的排序数据集
db.test.findOne([query]) 返回符合条件的一条数据
db.test.getDB() 返回此数据集所属的数据库名称
db.test.getIndexes() 返回些数据集的索引信息
db.test.group({key:...,initial:...,reduce:...[,cond:...]})
db.test.mapReduce(mayFunction,reduceFunction,)
db.test.remove(query) 在数据集中删除一条数据
db.test.renameCollection(newName) 重命名些数据集名称
db.test.save(obj) 往数据集中插入一条数据
db.test.stats() 返回此数据集的状态
db.test.storageSize() 返回此数据集的存储大小
db.test.totalIndexSize() 返回此数据集的索引文件大小
db.test.totalSize() 返回些数据集的总大小
db.test.update(query,object[,upsert_bool]) 在此数据集中更新一条数据
db.test.validate() 验证此数据集
db.test.getShardVersion() 返回数据集共享版本号

 

3、MongoDB语法与现有关系型数据库SQL语法比较
MongoDB语法 MySql语法
db.test.find({&#39;name&#39;:&#39;foobar&#39;}) <&#61;&#61;> select * from test where name&#61;&#39;foobar&#39;
db.test.find() <&#61;&#61;> select * from test
db.test.find({&#39;ID&#39;:10}).count() <&#61;&#61;> select count(*) from test where ID&#61;10
db.test.find().skip(10).limit(20) <&#61;&#61;> select * from test limit 10,20
db.test.find({&#39;ID&#39;:{$in:[25,35,45]}}) <&#61;&#61;> select * from test where ID in (25,35,45)
db.test.find().sort({&#39;ID&#39;:-1}) <&#61;&#61;> select * from test order by ID desc
db.test.distinct(&#39;name&#39;,{&#39;ID&#39;:{$lt:20}}) <&#61;&#61;> select distinct(name) from test where ID<20
db.test.group({key:{&#39;name&#39;:true},cond:{&#39;name&#39;:&#39;foo&#39;},reduce:function(obj,prev){prev.msum&#43;&#61;obj.marks;},initial:{msum:0}}) <&#61;&#61;> select name,sum(marks) from test group by name
db.test.find(&#39;this.ID<20&#39;,{name:1}) <&#61;&#61;> select name from test where ID<20
db.test.insert({&#39;name&#39;:&#39;foobar&#39;,&#39;age&#39;:25})<&#61;&#61;>insert into test (&#39;name&#39;,&#39;age&#39;) values(&#39;foobar&#39;,25)
db.test.remove({}) <&#61;&#61;> delete * from test
db.test.remove({&#39;age&#39;:20}) <&#61;&#61;> delete test where age&#61;20
db.test.remove({&#39;age&#39;:{$lt:20}}) <&#61;&#61;> elete test where age<20
db.test.remove({&#39;age&#39;:{$lte:20}}) <&#61;&#61;> delete test where age<&#61;20
db.test.remove({&#39;age&#39;:{$gt:20}}) <&#61;&#61;> delete test where age>20
db.test.remove({&#39;age&#39;:{$gte:20}}) <&#61;&#61;> delete test where age>&#61;20
db.test.remove({&#39;age&#39;:{$ne:20}}) <&#61;&#61;> delete test where age!&#61;20
db.test.update({&#39;name&#39;:&#39;foobar&#39;},{$set:{&#39;age&#39;:36}}) <&#61;&#61;> update test set age&#61;36 where name&#61;&#39;foobar&#39;
db.test.update({&#39;name&#39;:&#39;foobar&#39;},{$inc:{&#39;age&#39;:3}}) <&#61;&#61;> update test set age&#61;age&#43;3 where
name&#61;&#39;foobar&#39;

 

4、MongoDB主从复制介绍
MongoDB的主从复制其实很简单&#xff0c;就是在运行 主的服务器 上开启mongod进程 时&#xff0c;加入参数--master即可&#xff0c;在运行从的服务 器上开启mongod进程时&#xff0c;加入--slave 和 --source 指定主即可&#xff0c;这样&#xff0c;在主数据 库更新时&#xff0c;数据被复制到从数据库 中

(这里日志 文件 和访问 数据时授权用户暂时不考虑 )
下面我在单台服务器上开启2 deamon来模拟2台服务器进行主从复制&#xff1a;
$ mkdir m_master m_slave
$mongodb/bin/mongod  --port  28018 --dbpath ~/m_master  --master  &
$mongodb/bin/mongod  --port  28019 --dbpath ~/m_slave  --slave  --source   localhost:28018  &
这样主从服务器都已经启动了&#xff0c;可以利用 netstat -an -t 查看28018、28019端口 是否开放

登录主服务器&#xff1a;
$ mongodb/bin/mongo --port 28018
MongoDB shell version: 1.2.4-
url: test
connecting to: 127.0.0.1:28018/test
type "help" for help
> show dbs
admin
local
test
> use test
switched to db test
> show collections
这里主上的test数据什么表都没有&#xff0c;为空&#xff0c;查看从服 务器同样也是这样
$ mongodb/bin/mongo --port 28019
MongoDB shell version: 1.2.4-
url: test
connecting to: 127.0.0.1:28019/test
type "help" for help
> show dbs
admin
local
test
> use test
switched to db test
> show collections
那么现在我们来验证主从数据是否会像想象的那样同步 呢&#xff1f;


我们在主上新建表user
> db  
test
>db.createCollection("user");
> show collections           
system.indexes
user
>
表 user已经存在了&#xff0c;而且test库中还多了一个system.indexes用来存放索引的表

到从服务器上查看test库&#xff1a;
> db  
test
> show collections           
system.indexes
User
> db.user.find();
>
从 服务器的test库中user表已经存在&#xff0c;同时我还查了一下user表为空
现在我们再来测试一下&#xff0c;向主服务器test库的user表中插入一条数据
> show collections           
system.indexes
user
> db.user.insert({uid:1,name:"Falcon.C",age:25});
> db.user.find();                               
{ "_id" : ObjectId("4b8226a997521a578b7aea38"), "uid" : 1, "name" : "Falcon.C", "age" : 25 }
>
这 时我们查看从服务器的test库user表时会多出一条记录来&#xff1a;
> db.user.find();
{ "_id" : ObjectId("4b8226a997521a578b7aea38"), "uid" : 1, "name" : "Falcon.C", "age" : 25 }
>
MongoDB 还有 Replica Pairs 和 Master - Master
参考地址&#xff1a;
http://www.mongodb.org/display/DOCS/Master&#43;Slave


MongoDB一般情况下都可以支持主主复制&#xff0c;但是在大部分情况下官方不推荐使用
运行 的master - master的准备工作是&#xff1a;
新建存放数据 库文件 的路径
$mkdir mongodata/mm_28050 mongodata/mm_28051
运行mongodb数据库 &#xff0c;一个端口 为&#xff1a;28050&#xff0c;一个为&#xff1a;28051
$ mongodb/bin/mongod --port 28050 --dbpath ~/mongodata/mm_28050 --master --slave --source localhost:28051 > /dev/null &
$ mongodb/bin/mongod --port 28051 --dbpath ~mongodata/mm_28051 --master --slave --source localhost:28050 > /dev/null &
可以通过ps -ef|grep mongod 或 netstat -an -t来检查是否运行功能


测试master - master模式 &#xff1a;
$ mongodb/bin/mongo --port 28050
MongoDB shell version: 1.2.4-
url: test
connecting to: 127.0.0.1:28050/test
type "help" for help
> show dbs
admin
local
> db
test
> db.user.insert({_id:1,username:"Falcon.C",age:25,sex:"M"});
> db.user.find();
{ "_id" : 1, "username" : "Falcon.C", "age" : 25, "sex" : "M" }
> db.user.find();  //在28051端口插入数据后&#xff0c;再来查询&#xff0c;看数据是否同步
{ "_id" : 1, "username" : "Falcon.C", "age" : 25, "sex" : "M" }
{ "_id" : 2, "username" : "NetOne", "age" : 24, "sex" : "F" }
>
$ mongodb/bin/mongo --port 28051
MongoDB shell version: 1.2.4-
url: test
connecting to: 127.0.0.1:28051/test
type "help" for help
> db
test
> show collections         端口28050已经新建了一个user表并插入了一条数据&#xff0c;这里多出2表
system.indexes
user
> db.user.find();        //查询表user发现数据已经同步
{ "_id" : 1, "username" : "Falcon.C", "age" : 25, "sex" : "M" }
> db.user.insert({_id:2,username:"NetOne",age:24,sex:"F"});在此插入数据看数据是否双向同步
> db.user.find();  
{ "_id" : 1, "username" : "Falcon.C", "age" : 25, "sex" : "M" }
{ "_id" : 2, "username" : "NetOne", "age" : 24, "sex" : "F" }
>
通 过以上开启两终端分别连接到28050、28051端口&#xff0c;分别插入测试数据发现&#xff0c;一切正常&#xff0c;正如我们所想的那样实现数据的双向同步


转载于:https://my.oschina.net/usenrong/blog/733258


推荐阅读
  • 本指南介绍了 `requests` 库的基本使用方法,详细解释了其七个主要函数。其中,`requests.request()` 是构建请求的基础方法,支持其他高级功能的实现。此外,我们还重点介绍了如何使用 `requests.get()` 方法来获取 HTML 网页内容,这是进行网页数据抓取和解析的重要步骤。通过这些基础方法,读者可以轻松上手并掌握网页数据抓取的核心技巧。 ... [详细]
  • Python 伦理黑客技术:深入探讨后门攻击(第三部分)
    在《Python 伦理黑客技术:深入探讨后门攻击(第三部分)》中,作者详细分析了后门攻击中的Socket问题。由于TCP协议基于流,难以确定消息批次的结束点,这给后门攻击的实现带来了挑战。为了解决这一问题,文章提出了一系列有效的技术方案,包括使用特定的分隔符和长度前缀,以确保数据包的准确传输和解析。这些方法不仅提高了攻击的隐蔽性和可靠性,还为安全研究人员提供了宝贵的参考。 ... [详细]
  • 目录预备知识导包构建数据集神经网络结构训练测试精度可视化计算模型精度损失可视化输出网络结构信息训练神经网络定义参数载入数据载入神经网络结构、损失及优化训练及测试损失、精度可视化qu ... [详细]
  • 一个建表一个执行crud操作建表代码importandroid.content.Context;importandroid.database.sqlite.SQLiteDat ... [详细]
  • 如果应用程序经常播放密集、急促而又短暂的音效(如游戏音效)那么使用MediaPlayer显得有些不太适合了。因为MediaPlayer存在如下缺点:1)延时时间较长,且资源占用率高 ... [详细]
  • Ihavetwomethodsofgeneratingmdistinctrandomnumbersintherange[0..n-1]我有两种方法在范围[0.n-1]中生 ... [详细]
  • [转]doc,ppt,xls文件格式转PDF格式http:blog.csdn.netlee353086articledetails7920355确实好用。需要注意的是#import ... [详细]
  • 在 Ubuntu 中遇到 Samba 服务器故障时,尝试卸载并重新安装 Samba 发现配置文件未重新生成。本文介绍了解决该问题的方法。 ... [详细]
  • 在CentOS 7环境中安装配置Redis及使用Redis Desktop Manager连接时的注意事项与技巧
    在 CentOS 7 环境中安装和配置 Redis 时,需要注意一些关键步骤和最佳实践。本文详细介绍了从安装 Redis 到配置其基本参数的全过程,并提供了使用 Redis Desktop Manager 连接 Redis 服务器的技巧和注意事项。此外,还探讨了如何优化性能和确保数据安全,帮助用户在生产环境中高效地管理和使用 Redis。 ... [详细]
  • MATLAB字典学习工具箱SPAMS:稀疏与字典学习的详细介绍、配置及应用实例
    SPAMS(Sparse Modeling Software)是一个强大的开源优化工具箱,专为解决多种稀疏估计问题而设计。该工具箱基于MATLAB,提供了丰富的算法和函数,适用于字典学习、信号处理和机器学习等领域。本文将详细介绍SPAMS的配置方法、核心功能及其在实际应用中的典型案例,帮助用户更好地理解和使用这一工具箱。 ... [详细]
  • 在Android平台中,播放音频的采样率通常固定为44.1kHz,而录音的采样率则固定为8kHz。为了确保音频设备的正常工作,底层驱动必须预先设定这些固定的采样率。当上层应用提供的采样率与这些预设值不匹配时,需要通过重采样(resample)技术来调整采样率,以保证音频数据的正确处理和传输。本文将详细探讨FFMpeg在音频处理中的基础理论及重采样技术的应用。 ... [详细]
  • 在OpenShift上部署基于MongoDB和Node.js的多层应用程序
    本文档详细介绍了如何在OpenShift 4.x环境中部署一个包含MongoDB数据库和Node.js后端及前端的多层应用程序。通过逐步指导,读者可以轻松完成整个部署过程。 ... [详细]
  • Spring – Bean Life Cycle
    Spring – Bean Life Cycle ... [详细]
  • 本文详细介绍了在 CentOS 7 系统中配置 fstab 文件以实现开机自动挂载 NFS 共享目录的方法,并解决了常见的配置失败问题。 ... [详细]
  • 本文介绍了在 Java 编程中遇到的一个常见错误:对象无法转换为 long 类型,并提供了详细的解决方案。 ... [详细]
author-avatar
mobiledu2402852413
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有