命令參考


 


查看MongoDB命令方法


● 在shell中执行db.listCommands()命令


● 在浏览器管理接口http://localhost:28017/_commands


 


以下是MongoDB最常使用的命令:


●  buildinfo


管理专用命令,返回MongoDBserver的版本和主机操作系统信息


>db.runCommand({"buildinfo":1})


{


        "version" :"2.4.14",


        "gitVersion" :"05bebf9ab15511a71bfbded684bb226014c0a553",


        "sysInfo" : "Linuxip-10-154-253-119 2.6.21.7-2.ec2.v1.2.fc8xen #1 SMP Fri Nov 20 17:48:28 EST2009 x86_64 BOOST_LIB_VERSION=1_49",


        "loaderFlags" : "-fPIC-pthread -rdynamic",


        "compilerFlags" :"-Wnon-virtual-dtor -Woverloaded-virtual -fPIC -fno-strict-aliasing -ggdb-pthread -Wall -Wsign-compare -Wno-unknown-pragmas -Winvalid-pch -pipe -Werror-fno-builtin-memcmp -O3",


        "allocator" :"tcmalloc",


        "versionArray" : [


                2,


                4,


                14,


                0


        ],


        "javascriptEngine" :"V8",


        "bits" : 64,


        "debug" : false,


        "maxBsonObjectSize" :16777216,


        "ok" : 1


}


 


 


●  collStats


{"collStats" : collection}


返回指定统计集合的统计信息,包含大小、分配空间和索引大小


 


●  distinct


{"distinct" : collection,"key": key, "query": query}


列出指定集合中满足查询条件的文档的指定键的全部不同的值


 


●  drop


{"drop" : collection}


删除集合的全部数据(即删除集合)


 


● dropDatabase


{"dropDatabase":1}


删除当前数据库的全部数据(即删除数据库)


 


● dropIndexes


删除集合里面名称为name的索引,假设名称为"*"即为删除全部索引


{"dropIndexes" : collection,"index" : name}


 


 


● findAndModify


拥有相似事务特性的更新与查询操作


它是原子性的,会返回符合查询条件的更新后的文档。


一次最多仅仅更新一个文档,也就是条件query条件,且执行sort后的第一个文档。


db.COLLECTION_NAME.findAndModify({query:{},


                                  update:{},


                                 remove:true|false,


                                 new:true|false,


                                  sort:{},


                                  fields:{},


                                 upsert:true|false});


query是查询选择器,与findOne的查询选择器同样


update是要更新的值,不能与remove同一时候出现


remove表示删除符合query条件的文档。不能与update同一时候出现


new为true:返回个性后的文档。false:返回个性前的,默认是false


sort:排序条件,与sort函数的參数一致。


fields:投影操作。与find*的第二个參数一致。


upsert:与update的upsert參数一样。


 


● getLastError


{"getLastError" : 1[,"w" : w[, "wtimeout" : timeout]]}


查看本集合执行的最后一次操作的错误信息或者其他状态信息。在w台server复制集合的最后操作之前,这个命令会堵塞(超时的毫秒数到了)


 


● isMaster


{"isMaster" : 1}


查看本server是主server还是从server


 


● listCommands


{"listCommands":1}


返回全部能够在server上执行的命令及相关信息


 


● listDatabases


{"listDatabases":1}


管理数据库命令。列出server上全部数据库(须要在admin库上执行),同show dbs命令


 


> show dbs


admin   (empty)


local   0.078125GB


test    0.203125GB


> use admin


switched to db admin


>db.runCommand({"listDatabases":1})


{


        "databases" : [


                {


                        "name" :"local",


                        "sizeOnDisk": 83886080,


                        "empty" :false


                },


                {


                        "name" :"test",


                        "sizeOnDisk": 218103808,


                        "empty" :false


                },


                {


                        "name" :"admin",


                        "sizeOnDisk": 1,


                        "empty" :true


                }


        ],


        "totalSize" : 301989888,


        "ok" : 1


}


 


● ping


检查server连接是否正常。即server上锁了,这条命令也会立马返回。


 


● renameCollection


{"renameCollection" : a,"to" : b}


将集合a重命名为b,当中a和b都必需是完整的命令空间(比如"foo.bar"表示foo数据库中的bar集合)


 


● repairDatabase


修复并压缩当前数据库,这个操作可能会非常耗时。


 


● serverStatus


{"serverStatus":1}


返回这台server的管理统计信息。


 


 


固定集合


 


和普通集合相比,固定集合是大小是固定的,要事先创建。固定集合非常像环形队列,假设空间不足,最早文档就会被删除。为新的文档腾出空间。

这意味着固定集合在新文档插入时候会自己主动淘汰最早的文档。


还一个和普通集合的差别:就是在默认情况下固定集合没有索引,即使是"_id"上也没有索引。


 


固定集合特点:


1.插入速度极快。无需分配额外空间和查找空暇列表来放置文档。


2.按插入顺序输出的查询速度极快。由于文档本身是按插入顺序存储的。


3.插入新数据时,自己主动淘汰最的数据。


 


 



图:插入新文档到队尾


 



 


图:当队尾满了,将最后的文档替换掉


 


所以特别适合存储日志这样的场景。

MongoDB中设计固定集合的目的就是用来存储内部的复制日志oplog.


 


 


--创建固定集合,必需显示的创建


>db.createCollection("capped_col",{capped:true,size:100000});


{ "ok" : 1 }


 


说明:


capped_col:为固定集合名称


固定集合大小为100 000字节


其他选项 max是指定文档的上限,如:


 


>db.createCollection("capped_col1",{capped:true,size:100000,max:100});


{ "ok" : 1 }


 


注意:指定文档上限时必需同一时候指定大小。淘汰机制仅仅有在容量没有满时才会根据文档数据来工作。要是容量满了。淘汰机制则会根据容量来工作。就像别的固定集合一样。


 


--把普通集合转换成固定集合(大小为10000字节)


>db.runCommand({convertToCapped:"users",size:100000})


{ "ok" : 1 }


 


 


固定集合-自然排序


和前面介绍一样。自然排序就是文档在磁盘上的顺序,查询固定集合MongoDB默认是按插入顺序返回文档($natural:1)。

也能够使用自然排序依照反向插入的顺序查询。


>db.capped_col.find().sort({"natural":-1})


 


如图演示样例



图:按$natural:1排序(默认)


 



 


图:按$natural:-1排序