设为首页 收藏本站
查看: 819|回复: 0

[经验分享] mongodb指南(翻译)(六)

[复制链接]

尚未签到

发表于 2015-7-8 07:23:01 | 显示全部楼层 |阅读模式
  每一个mongodb服务器可以支持多个数据库。出于安全和方便管理的考虑,每一个数据库都是独立的,并且每一个数据库的数据也是分开存储的。
  一个数据库由一个或多个集合组成,文档(对象)存储在集合中,一个可选的安全证书可以控制访问。
  

命令
  简介
  mongo数据库有一个数据库命令的概念。数据库命令可以告诉数据库执行一些特殊的操作,或者请求当前操作的状态信息。
  一条命令是作为针对名为$cmd的特殊集合的查询发送给数据库的。数据库会把命令结果放到一个单独的文档中返回-使用findOne()查看一下你的驱动是否有这个功能。
  一般情况下命令的语法是:



db.$cmd.findOne( { :  [, options] } );
  shell为它提供了辅助函数:



db.runCommand( { :  [, options] } );
  例如,查看我们数据库当前轮廓(profile)级别设置,我们可以调用:



> db.runCommand({profile:-1});
{
"was" : 0.0 ,
"ok" : 1.0
}
  对于很多的数据库命令,一些驱动实现封装了一些方法使得更加容易使用。例如,mongo shell提供了:



> db.getProfilingLevel()
0.0
  让我们看一下这个方法都做了什么:



> print( db.getProfilingLevel )
function () {
var res = this._dbCommand({profile:-1});
return res ? res.was : null;
}
> print( db._dbCommand )
function (cmdObj) {
return this.$cmd.findOne(cmdObj);
}
  很多命令都有辅助函数-查看你的驱动的文档来获取更多信息。
  
  特权命令
某些操作仅仅是为数据库管理员准备的。这些特权操作可能仅会在名为admin的特殊数据库上执行.



> use admin;
> db.runCommand("shutdown"); // shut down the database
  如果数据库变量没有设置为admin,你可以使用adminCommand(在早于1.8的版本中是_adminCommand)自动切换到正确的数据库(只对当前操作有用):



> db.adminCommand("shutdown");
  (对于这个特别的命令,这里还有一个shell辅助函数,db.shutdownServer.)
  
  获取某个命令的帮助信息
  在shell中使用commandHelp可以获取某个命令的帮助信息:



> db.commandHelp("datasize")
help for: datasize example: { datasize:"blog.posts", keyPattern:{x:1}, min:{x:10}, max:{x:55} }
NOTE: This command may take awhile to run
  (有些命令目前尚无帮助信息)
  

getLog命令
  log相关的命令
  使用getLog命令你可以得到一个log类别变量的列表,和针对这些类别所有的消息。这个命令在1.9.2中引入。



> db.adminCommand({getLog:"*|global|"})
  获取类别
  传递给getLog一个"*"选项,就可以获取到所有可能存在的log类别:



> db.adminCommand({getLog:"*"})
{
"names" : [
"global",
"rs",
"startupWarnings" ],
"ok" : 1
}
  输出表明这里有3种类别的log可用:"global"(见下),复制组通知,启动警告。
"global"类别
  这个特殊的“global”类别包含了所有其他类别。你可以传入任何类别来限制返回的行。



> db.adminCommand({getLog:"global"})
{
"log" : [
"Thu Aug 18 13:57:05 [initandlisten] MongoDB starting : pid=654312892 port=27017
dbpath=/tmp/db1/ 64-bit host=localnose",
"Thu Aug 18 13:57:05 [initandlisten] recover : no journal files present, no recovery needed",
"Thu Aug 18 13:57:07 [websvr] admin web console waiting for connections on port 28017",
"Thu Aug 18 13:57:07 [initandlisten] waiting for connections on port 27017",
"Thu Aug 18 13:57:07 [initandlisten] connection accepted from 127.0.0.1:56703 #1",
"Thu Aug 18 13:57:07 [rsStart] replSet STARTUP2",
"Thu Aug 18 13:57:07 [rsSync] replSet SECONDARY",
"Thu Aug 18 13:57:10 [initandlisten] connection accepted from 127.0.0.1:56704 #2"
],
"ok" : 1
}
  

setParameter命令
  设置运行时参数
  这个命令允许在运行时改变一些内部选项和一些命令行参数。
  这个命令在1.8加入但是一些选项在那之后已经改变了。请关注它们变得可用的版本。



> db.adminCommand({setParameter:1, option1:true, ...})
// real example to increase logging
> db.adminCommand({setParameter:1, logLevel:4})


//disallow table/collection scans
> db.adminCommand({setParameter:1, notablescan:true})
{ "was" : false, "ok" : 1 }
> db.foo.insert({_id:1, name:false})
> db.foo.find()
{ "_id" : 1 , "name" : false }
> db.foo.find({name:true})
error: { "$err" : "table scans not allowed:test.foo", "code" : 10111 }
> db.adminCommand({setParameter:1, notablescan:false})
{ "was" : true, "ok" : 1 }
> db.foo.find({name:true})
  选项

选项 描述 可用版本
syncdelay 数字 内存刷新间隔 1.8
logLevel 整型(0-5) 设置记录级别 1.8
quiet true/false 记录安静模式 1.8
notablescan true/false 在需要表扫描时触发错误 1.8
journalCommitInterval 数字(1-500ms) 日志(组)提交窗口 1.9.1
  
获取参数状态
正像你可以设置运行时的参数,你还可以获取他们。



> db.adminCommand({getParameter:1, syncdelay:true})
{ "syncdelay" : 60, "ok" : 1 }
  

cloneCollection命令
  从一台服务器拷贝单个集合到另一台服务器。



db.runCommand( { cloneCollection: ,
from:  [,query: ] [,copyIndexes:] } );
  从一个服务器向另一个服务器拷贝集合。不要在单个的服务器上面使用,因为它存储的目标和源是同一个db.collection(命名空间).

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-84225-1-1.html 上篇帖子: Mongodb中用Objectid操作数据 下篇帖子: mongoDB .Net,Asp.Net高效分页类
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表