如何我们要删除一个集合,可以采用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学习之:数据库命令以及固定集合的更多相关文章

  1. MongoDB学习笔记-06 数据库命令、固定集合、GridFS、javascript脚本

    介绍MongoDB支持的一些高级功能: 数据库命令 固定大小的集合 GridFS存储大文件 MongoDB对服务端JavaScript的支持 数据库命令 命令的原理 MongoDB中的命令其实是作为一 ...

  2. MongoDB学习笔记-数据库命令

    概念 数据库命令(database command)是一种非常特殊类型的查询.文档的创建.更新.删除及查询都属于数据库命令的范畴,它还包含管理性的任务(比如关闭服务器和克隆数据库).统计数据及执行聚合 ...

  3. 【Mongodb教程 第十七课 】MongoDB常用命令 数据库命令 集合操作命令

    (1)数据库命令 a)添加用户 db.addUser(‘name’,’pwd’) b)删除用户 db.removeUser(‘name’) c)用户验证 db.auth(‘name’,’pwd’) d ...

  4. MongoDB学习笔记(二)--Capped集合 && GridFS存储文件

    Capped集合                                                            Capped集合的大小是固定的,如果空间都被用完了,新添加的对象 ...

  5. 【Mongodb教程 第十八课 】MongoDB常用命令 数据库命令 集合操作命令

    面向文档的 NoSQL 数据库主要解决的问题不是高性能的并发读写,而是保证海量数据存储的同时,具有良好的查询性能.  条件操作符 <, <=, >, >=  这个操作符就不用多 ...

  6. MongoDB学习笔记(数据操作)

    1.  批量插入:     以数组的方式一次插入多个文档可以在单次TCP请求中完成,避免了多次请求中的额外开销.就数据传输量而言,批量插入的数据中仅包含一份消息头,而多次单条插入则会在每次插入数据时封 ...

  7. mongodb学习比较(数据操作篇)

    1.  批量插入:     以数组的方式一次插入多个文档可以在单次TCP请求中完成,避免了多次请求中的额外开销.就数据传输量而言,批量插入的数据中仅包含一份消息头,而多次单条插入则会在每次插入数据时封 ...

  8. MongoDB的分片数据库命令总结

    sh._adminCommand 在admin数据库运行database command ,就像db.runCommand() ,不过可以保证只在 mongos 上运行. sh._checkFullN ...

  9. 初步学习大数据——设置虚拟机固定ip地址

    1.打开本机的网络连接 2.右键以太网,打开属性. 3.右键VMnet8,打开属性.最多不能超过255,最少不能小于0.    0~255之间. 4.找到你要设置固定IP地址的虚拟机 ,选择上方的编辑 ...

随机推荐

  1. locust性能测试安装

    Locust简介 Locust是一款易于使用的分布式用户负载测试工具.它用于对网站(或其他系统)进行负载测试,并确定系统可以处理多少并发用户.这个想法是,在测试期间,一群蝗虫(Locust)会攻击你的 ...

  2. AC日记——狼抓兔子 bzoj 1001

    Description 现在小朋友们最喜欢的"喜羊羊与灰太狼",话说灰太狼抓羊不到,但抓兔子还是比较在行的, 而且现在的兔子还比较笨,它们只有两个窝,现在你做为狼王,面对下面这样一 ...

  3. 微信小程序 赋值问题

    通常我们在页面跳转传递过来的参数要用到页面渲染时或是请求接口回来的数据要用到页面渲染时 对page的data赋值可不能用简单的变量赋值,要用微信小微信专有的this.setData方法 Page({ ...

  4. 拼题 L2-001 紧急救援 最短路计数+记录路径

    https://pintia.cn/problem-sets/994805046380707840/problems/994805073643683840 L2-001 紧急救援 (25 分)   作 ...

  5. Codeforces Gym 100203G Good elements 暴力乱搞

    原题链接:http://codeforces.com/gym/100203/attachments/download/1702/statements.pdf 题解 考虑暴力的复杂度是O(n^3),所以 ...

  6. WEBLOGIC启动后,重启后控制台进入缓慢、延迟,探查WEBLOGIC

    本文说的是解决过程,可直接点击本行略过探查内容,跳到最后的解决办法!! 现象: 1.WEBLOGIC安装在 CENTOSopenSUSE 等LINUX或者UNIX机器上,无论是虚拟机或者PC或者服务器 ...

  7. Delphi图像处理 -- 颜色矩阵变换

    转载自阿发伯:http://blog.csdn.net/maozefa/article/details/8316430 阅读提示:     <Delphi图像处理>系列以效率为侧重点,一般 ...

  8. jquery获取<div></div>之间的内容.text() 和 .html()区别

    jQuery 获取 div 之间的内容,有两种方法,$(selector).text().$(selector).html() . html: <div> <p>test< ...

  9. 百科知识 hta文件如何打开

    后缀名为hta是什么文件,谢谢? 2006-10-11 21:36 提问者: tanhailong2006 | 浏览次数:2092次 我来帮他解答 输入内容已经达到长度限制 还能输入 9999 字 插 ...

  10. Effective Go(官方文档)笔记

    Effective Go(官方文档)笔记 自己主动局部变量提升(编译期完毕?):return &...; 内置函数: new/make copy, append delete range(这是 ...