mongodb学习之:数据库命令以及固定集合
如何我们要删除一个集合,可以采用db.test.drop()的方式,其实在这背后,这个函数运行的是drop命令。可以用runCommand达到同样的效果。
我们首先新建一个集合作为测试使用:
> use maple1
switched to db maple1
> db.maple1.insert({'name':'zhanghongfeng'})
WriteResult({ "nInserted" : 1 })
删除掉这个集合,反馈的结果中ok:1代表成功
> db.runCommand({"drop":"maple1"})
{ "ns" : "maple1.maple1", "nIndexesWas" : 1, "ok" : 1 }
如果操作失败了,会有errmsg提示失败的原因
> db.runCommand({"drop":"maple1"})
{
"ok" : 0,
"errmsg" : "ns not found",
"code" : 26,
"codeName" : "NamespaceNotFound"
}
如果想查看所有的命令在shell中运行db.listCommands()就可以得到所有的命令。下面列举下Mongodb最常用的命令。
1 buildInfo: 返回Mongodb服务器的版本号和主机的操作系统
> db.runCommand({"buildInfo":1})
{
"version" : "3.4.7",
"gitVersion" : "cf38c1b8a0a8dca4a11737581beafef4fe120bcd",
"modules" : [ ],
"allocator" : "tcmalloc",
"javascriptEngine" : "mozjs",
"sysInfo" : "deprecated",
"versionArray" : [
3,
4,
7,
0
],
"openssl" : {
"running" : "OpenSSL 1.0.2g 1 Mar 2016",
"compiled" : "OpenSSL 1.0.2g 1 Mar 2016"
},
"buildEnvironment" : {
"distmod" : "",
"distarch" : "x86_64",
"cc" : "cc: cc (Ubuntu 7.1.0-13ubuntu1) 7.1.0",
"ccflags" : "-fno-omit-frame-pointer -fno-strict-aliasing -ggdb -pthread -Wall -Wsign-compare -Wno-unknown-pragmas -Wno-nonnull-compare -Wno-error=c++1z-compat -Wno-error=noexcept-type -Wno-error=format-truncation -Wno-error=int-in-bool-context -Wno-overflow -Winvalid-pch -Werror -O2 -Wno-unused-local-typedefs -Wno-unused-function -Wno-deprecated-declarations -Wno-unused-const-variable -Wno-unused-but-set-variable -Wno-missing-braces -fstack-protector-strong -fno-builtin-memcmp",
"cxx" : "g++: g++ (Ubuntu 7.1.0-13ubuntu1) 7.1.0",
"cxxflags" : "-g -O2 -fdebug-prefix-map=/build/mongodb-5gk9fl/mongodb-3.4.7=. -fstack-protector-strong -Wformat -Werror=format-security -Woverloaded-virtual -Wno-maybe-uninitialized -std=c++11",
"linkflags" : "-Wl,-Bsymbolic-functions -Wl,-z,relro -pthread -Wl,-z,now -rdynamic -Wl,--fatal-warnings -fstack-protector-strong -fuse-ld=gold -Wl,--build-id -Wl,-z,noexecstack -Wl,--warn-execstack -Wl,-z,relro",
"target_arch" : "x86_64",
"target_os" : "linux"
},
"bits" : 64,
"debug" : false,
"maxBsonObjectSize" : 16777216,
"storageEngines" : [
"devnull",
"ephemeralForTest",
"mmapv1",
"wiredTiger"
],
"ok" : 1
}
2 collStats: 返回指定集合的统计信息,包括数据大小,已分配的存储空间和索引大小
> db.runCommand({"collStats":"maple"})
{
"ns" : "maple.maple",
"size" : 234,
"count" : 4,
"avgObjSize" : 58,
"storageSize" : 36864,
"capped" : false,
"wiredTiger" : {
"metadata" : {
"formatVersion" : 1
},
3 distinct:列出指定集合中满足查询条件的文档的指定键的所有不同值
> db.runCommand({"distinct":"maple","key":"name"})
{ "values" : [ "zhanghongfeng_maple" ], "ok" : 1 }
4 drop和dropDatabase: 删除集合的所有数据和当前数据库的所有数据
5 getlastError: 查看对本集合执行的最后一次操作的错误信息或者其他状态信息。
6 isMaster: 检查本服务器是主服务器还是从服务器
> db.runCommand({"isMaster":1})
{
"ismaster" : true,
"maxBsonObjectSize" : 16777216,
"maxMessageSizeBytes" : 48000000,
"maxWriteBatchSize" : 1000,
"localTime" : ISODate("2017-12-27T13:45:21.228Z"),
"maxWireVersion" : 5,
"minWireVersion" : 0,
"readOnly" : false,
"ok" : 1
}
7 Listcommands: 返回所有可以在服务器上运行的命令
8 listDatabases:列出服务器上所有的数据库
9 ping: 检测服务器的链接是否正常
> db.runCommand({"ping":1})
{ "ok" : 1 }
10
固定集合:
顾名思义,固定集合就是能够将集合的大小以及文档数进行固定的集合。固定集合的创建方法是用createCollection。如下所示,size代表集合的大小,max代表最大的文档个数
> db.createCollection("fixedcollection",{capped:true,size:1000,max:2})
{ "ok" : 1 }
插入2个文档
>db.fixedcollection.insert({"name":"zhanghongfeng","age":33})
> db.fixedcollection.insert({"name":"maple","age":32})
显示插入的2个文档
> db.fixedcollection.find()
{ "_id" : ObjectId("5a43a73ba889535e61dc29a8"), "name" : "zhanghongfeng", "age" : 33 }
{ "_id" : ObjectId("5a43a77ba889535e61dc29a9"), "name" : "maple", "age" : 32 }
再次插入一个文档
> db.fixedcollection.insert({"name":"zhf","age":32})
WriteResult({ "nInserted" : 1 })
通过查询可以看到插入一个文档后,最早插入的文档name:zhanghongfeng被替换掉了。这是因为我们在创建固定集合指定了最大文档个数为2个。因此新插入的文档会替换之前的文档,替换方法是替换最早建立的文档。
> db.fixedcollection.find()
{ "_id" : ObjectId("5a43a77ba889535e61dc29a9"), "name" : "maple", "age" : 32 }
{ "_id" : ObjectId("5a43a78ca889535e61dc29aa"), "name" : "zhf", "age" : 32 }
固定集合的排列方式和环形队列一样,通过指定查询的顺序来查找,$natural:-1按照文档的插入时间从晚到早的顺序,也就是从队列的末尾开始查起。$natural:1是从队列的对头开始查起
> db.fixedcollection.find().sort({"$natural":-1})
{ "_id" : ObjectId("5a43a78ca889535e61dc29aa"), "name" : "zhf", "age" : 32 }
{ "_id" : ObjectId("5a43a77ba889535e61dc29a9"), "name" : "maple", "age" : 32 }
> db.fixedcollection.find().sort({"$natural":1})
{ "_id" : ObjectId("5a43a77ba889535e61dc29a9"), "name" : "maple", "age" : 32 }
{ "_id" : ObjectId("5a43a78ca889535e61dc29aa"), "name" : "zhf", "age" : 32 }
mongodb学习之:数据库命令以及固定集合的更多相关文章
- MongoDB学习笔记-06 数据库命令、固定集合、GridFS、javascript脚本
介绍MongoDB支持的一些高级功能: 数据库命令 固定大小的集合 GridFS存储大文件 MongoDB对服务端JavaScript的支持 数据库命令 命令的原理 MongoDB中的命令其实是作为一 ...
- MongoDB学习笔记-数据库命令
概念 数据库命令(database command)是一种非常特殊类型的查询.文档的创建.更新.删除及查询都属于数据库命令的范畴,它还包含管理性的任务(比如关闭服务器和克隆数据库).统计数据及执行聚合 ...
- 【Mongodb教程 第十七课 】MongoDB常用命令 数据库命令 集合操作命令
(1)数据库命令 a)添加用户 db.addUser(‘name’,’pwd’) b)删除用户 db.removeUser(‘name’) c)用户验证 db.auth(‘name’,’pwd’) d ...
- MongoDB学习笔记(二)--Capped集合 && GridFS存储文件
Capped集合 Capped集合的大小是固定的,如果空间都被用完了,新添加的对象 ...
- 【Mongodb教程 第十八课 】MongoDB常用命令 数据库命令 集合操作命令
面向文档的 NoSQL 数据库主要解决的问题不是高性能的并发读写,而是保证海量数据存储的同时,具有良好的查询性能. 条件操作符 <, <=, >, >= 这个操作符就不用多 ...
- MongoDB学习笔记(数据操作)
1. 批量插入: 以数组的方式一次插入多个文档可以在单次TCP请求中完成,避免了多次请求中的额外开销.就数据传输量而言,批量插入的数据中仅包含一份消息头,而多次单条插入则会在每次插入数据时封 ...
- mongodb学习比较(数据操作篇)
1. 批量插入: 以数组的方式一次插入多个文档可以在单次TCP请求中完成,避免了多次请求中的额外开销.就数据传输量而言,批量插入的数据中仅包含一份消息头,而多次单条插入则会在每次插入数据时封 ...
- MongoDB的分片数据库命令总结
sh._adminCommand 在admin数据库运行database command ,就像db.runCommand() ,不过可以保证只在 mongos 上运行. sh._checkFullN ...
- 初步学习大数据——设置虚拟机固定ip地址
1.打开本机的网络连接 2.右键以太网,打开属性. 3.右键VMnet8,打开属性.最多不能超过255,最少不能小于0. 0~255之间. 4.找到你要设置固定IP地址的虚拟机 ,选择上方的编辑 ...
随机推荐
- mysql开发必知必会
mysql的数据库的数据库,即存储mysql数据库的底层目录,是在/var/lib/mysql目录下(Linux,win在目录下的data中). 我们新创建的数据库db1就是在/var/lib/mys ...
- 回调函数 typedef bool (*IsUsed)(const string &name,boost::shared_ptr<ShpGeometry> oneGeometry);
就是指向函数的指针. 回调函数,表示了一个函数的地址,将函数作为参数进行使用.参考百度百科:http://baike.baidu.com/view/414773.htm 常用的大概就是在sort函数中 ...
- HDU6214 Smallest Minimum Cut
题目链接:HDU6214 留一个链式前向星+Dinic模板(希望不要被某人发现,嘿嘿嘿). #include <cstdio> #include <cstring> #incl ...
- ubuntu和raspberry下调试python_spi备忘
Ubuntu12.04 自安装python3.3中头文件Python.h路径:usr/local/python3.3/include/python3.3m Ubuntu12.04 自带的Python2 ...
- Java随机数技巧-新手篇
package 向家康; import java.util.concurrent.ThreadLocalRandom; public class 练习21 { public static void m ...
- 邁向IT專家成功之路的三十則鐵律 鐵律二十:IT人證照之道-收斂
這是一個各行各業都講究專業證照的世代,彷彿證照只要比別人少一些就感覺自己遜掉了.現今IT領域的證照肯定是所有行業中最複雜的,無論是想求職升遷的還是想轉進IT跑道的,許多人由於受到媒體與廣告的影響,都不 ...
- ubuntu配置django
安装 安装Apache sudo apt-get install apache2 安装Django 下载Django 安装mod_wsgi sudo apt-get install libapache ...
- 【转载】读懂IL代码就这么简单(三)完结篇
一 前言 写了两篇关于IL指令相关的文章,分别把值类型与引用类型在 堆与栈上的操作区别详细的写了一遍这第三篇也是最后一篇,之所以到第三篇就结束了,是因为以我现在的层次,能理解到的都写完了,而且个人认为 ...
- asp.net MVC通用分页组件 使用方便 通用性强
asp.net MVC通用分页组件 使用方便 通用性强 该分页控件的显示逻辑: 1 当前页面反色突出显示,链接不可点击 2 第一页时首页链接不可点击 3 最后一页时尾页链接不可点击 4 当前页面左 ...
- Android与服务器端数据交互(基于SOAP协议整合android+webservice)
http://www.cnblogs.com/zhangdongzi/archive/2011/04/19/2020688.html 上一节中我们通过http协议,采用HttpClient向服务器端a ...