zoukankan      html  css  js  c++  java
  • 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 dropdropDatabase: 删除集合的所有数据和当前数据库的所有数据

    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 }

  • 相关阅读:
    MySQL学习之——锁(行锁、表锁、页锁、乐观锁、悲观锁等)
    PhpExcel导出excel报错:net::ERR_INVALID_RESPONSE
    Java收藏
    Java项目收藏
    CentOS 6.8 安装 Erlang 及 RabbitMQ Server
    Redis 中 5 种数据结构的使用场景介绍
    Golang 实现 set 集合,变相实现 切片去重、排序 功能
    查看 Mac/Linux 某端口占用情况
    [Beego模型] 六、事务处理
    [Beego模型] 五、构造查询
  • 原文地址:https://www.cnblogs.com/zhanghongfeng/p/8127926.html
Copyright © 2011-2022 走看看