`
welcome66
  • 浏览: 397194 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

MongoDB常用命令之数据库和集合命令(一)

阅读更多

       MongoDB是一个NoSQL数据库系统:一个数据库可以包含多个集合(Collection),每个集合对应于关系数据库中的表;而每个集合中可以存储一组由列标识的记录,列是可以自由定义的,非常灵活,由一组列标识的实体的集合对应于关系数据库表中的行。

       一个mongod服务可以有建立多个数据库,每个数据库可以有多张表,这里的表名叫collection,每个collection可以存放多个文档(document),每个文档都以BSON(binary json)的形式存放于硬盘中,因此可以存储比较复杂的数据类型。它是以单文档为单位存储的,你可以任意给一个或一批文档新增或删除字段,而不会对其它文档造成影响,这就是所谓的schema-free,这也是文档型数据库最主要的优点。跟一般的key-value数据库不一样的是,它的value中存储了结构信息,所以你又可以像关系型数据库那样对某些域进行读写、统计等操作。Mongo最大的特点是他支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。Mongo还可以解决海量数据的查询效率,根据官方文档,当数据量达到50GB以上数据时,Mongo数据库访问速度是MySQL10 倍以上。

 

       简单介绍一下MongoDB的shell命令:

       

(一)数据库操作基本命令

 

1、show dbs

显示当前数据库服务器上的数据库
2、use pagedb
 切换到指定数据库pagedb的上下文,可以在此上下文中管理pagedb数据库以及其中的集合等
3、show collections
显示数据库中所有的集合(collection)
4、db.serverStatus()  
查看数据库服务器的状态。
5、查询指定数据库统计信息
use fragment

 

db.stats()
6、查询指定数据库包含的集合名称列表
db.getCollectionNames()
7、创建数据库
在MongoDB中,可以直接通过use dbname来切换到这个数据库上下文下面,系统会自动延迟创建该数据库,例如:
 
> show dbs
local   (empty)
pa_test       0.078125GB
mgt     0.078125GB
> use test
switched to db test
> db.user.save({'id':'999','name':'kk'})
> show dbs
local   (empty)
pa_test       0.078125GB
test    0.078125GB
mgt     0.078125GB
>
 先指定要创建的数据库,并且向指定其中的一个集合并插入数据后,这样数据库和集合都被创建了。
 
8、删除数据库
直接使用db.dropDatabase()即可删除数据库。
       (二)集合命令基本操作
1、创建集合
可以使用命令db.createCollection(name, { size : ..., capped : ..., max : ... } )创建集合

 

> db.createCollection('files', {'capped':true, 'size':10240, 'max':17855200})  
{ "ok" : 1 }  
> show collections  
files  
storeCollection  
system.indexes 

 2、删除集合

删除集合,可以执行db.mycoll.drop()。

3、插入更新记录

直接使用集合的save方法

 

>db.storeCollection.save({'version':'3.5', 'segment':'e3ol6'})

 更新记录,使用save会将原来的记录值进行覆盖实现记录更新。

4、查询一条记录

使用findOne()函数,参数为查询条件,可选,系统会随机查询获取到满足条件的一条记录(如果存在查询结果数量大于等于1)示例如下所示:

> db.storeCollection.findOne({'version':'3.5'})  
{  
        "_id" : ObjectId("4ef970f23c1fc4613425accc"),  
        "version" : "3.5",  
        "segment" : "e3ol6"  
}  

 5、查询多条记录

 

使用find()函数,参数指定查询条件,不指定条件则查询全部记录。

6、删除记录

使用集合的remove()方法,参数指定为查询条件,示例如下所示:

> db.storeCollection.remove({'version':'3.5'})  
> db.storeCollection.findOne()  
null 

 

7、创建索引

 

可以使用集合的ensureIndex(keypattern[,options])方法,示例如下所示:

> use pagedb  
switched to db pagedb  
> db.page.ensureIndex({'title':1, 'url':-1})  
> db.system.indexes.find()  
{ "name" : "_id_", "ns" : "pagedb.page", "key" : { "_id" : 1 }, "v" : 0 }  
{ "name" : "_id_", "ns" : "pagedb.system.users", "key" : { "_id" : 1 }, "v" : 0}  
{ "_id" : ObjectId("4ef977633c1fc4613425accd"), "ns" : "pagedb.page", "key" : {"title" : 1, "url" : -1 }, "name" : "title_1_url_-1", "v" : 0 }  

上述,ensureIndex方法参数中,数字1表示升序,-1表示降序。

 

使用db.system.indexes.find()可以查询全部索引。

8、查询索引

我们为集合建立的索引,那么可以通过集合的getIndexes()方法实现查询,示例如下所示:

> db.page.getIndexes()  
[  
        {  
                "name" : "_id_",  
                "ns" : "pagedb.page",  
                "key" : {  
                        "_id" : 1  
                },  
                "v" : 0  
        },  
        {  
                "_id" : ObjectId("4ef977633c1fc4613425accd"),  
                "ns" : "pagedb.page",  
                "key" : {  
                        "title" : 1,  
                        "url" : -1  
                },  
                "name" : "title_1_url_-1",  
                "v" : 0  
        }  
]  

当然,如果需要查询系统中全部的索引,可以使用db.system.indexes.find()函数。

9、删除索引

 

删除索引给出了两个方法:

db.mycoll.dropIndex(name)  
db.mycoll.dropIndexes() 

第一个通过指定索引名称,第二个删除指定集合的全部索引。

 

10、索引重建

可以通过集合的reIndex()方法进行索引的重建,示例如下所示:

> db.page.reIndex()  
{  
        "nIndexesWas" : 2,  
        "msg" : "indexes dropped for collection",  
        "ok" : 1,  
        "nIndexes" : 2,  
        "indexes" : [  
                {  
                        "name" : "_id_",  
                        "ns" : "pagedb.page",  
                        "key" : {  
                                "_id" : 1  
                        },  
                        "v" : 0  
                },  
                {  
                        "_id" : ObjectId("4ef977633c1fc4613425accd"),  
                        "ns" : "pagedb.page",  
                        "key" : {  
                                "title" : 1,  
                                "url" : -1  
                        },  
                        "name" : "title_1_url_-1",  
                        "v" : 0  
                }  
        ],  
        "ok" : 1  
}  

11、统计集合记录数

use fragment

db.baseSe.count()
统计结果,如下所示:

 

> use fragment  
switched to db fragment  
> db.baseSe.count()  
36749 

 

上述统计了数据库fragment的baseSe集合中记录数。
12、查询并统计结果记录数

use fragment

db.baseSe.find().count()

find()可以提供查询参数,然后查询并统计结果,如下所示:

> use fragment  
switched to db fragment  
> db.baseSe.find().count()  
36749  

上述执行先根据查询条件查询结果,然后统计了查询数据库fragment的baseSe结果记录集合中记录数。

13、查询指定数据库的集合当前可用的存储空间

use fragment
> db.baseSe.storageSize()
142564096

14、查询指定数据库的集合分配的存储空间

> db.baseSe.totalSize()
144096000

 上述查询结果中,包括为集合(数据及其索引存储)分配的存储空间。

 

 

 

 

 

分享到:
评论

相关推荐

    MongoDB常用命令汇总

    包含对数据库、集合、文档的常用操作。

    MongoDB常用操作命令大全

    MongoDB常用操作命令大全 数据库常用命令 Collection聚集集合 用户相关 聚集集合查询

    mongodb 操作命令(全)

    mongodb 操作命令(全) 包括: 数据库相关的操作 集合相关操作 用户相关操作 。。。。。

    MongoDB常用数据库命令大全

    一、MongoDB 数据库常用操作命令 1、Help查看命令提示 help db.help(); db.yourColl.help(); 2、切换/创建数据库 use raykaeso; 当创建一个集合(table)的时候会自动创建当前数据库 3、查询所有数据库 show dbs; 4...

    mongoDB常用命令1

    4、删除当前使用数据库 db.dropDatabase() 8、查看当前使用的数据库 db.getName() 2、得到指定名称的聚集集合(table) db.

    MongoDB常用操作汇总

    查看当前数据库中所有的集合,使用命令 show collections 或使用 show tables 创建集合有两种方式,显示创建和隐式创建 显示创建可以使用命令 db.createCollection(“集合名称") 隐式创建可以使用命令 db.集合...

    【MongoDB】数据库的基本操作01

    1.2.1常用命令 1.2.2数据类型 1.2.3集合操作 1.2.3.1创建集合 1.2.3.2查看集合 1.2.3.3删除集合 1.2.4注意点 1.3增删改查 1.3.1插入数据 1.3.2查找数据 1.3.3更新数据 1.3.4删除数据 1.3.5符号 1.1基础入门 1.1.1...

    Mongo DB数据库命令集合.rar

    Mongo DB数据库日常常用操作命令大全集合,适用于初学MONGO DB的人员掌握基本命令

    MongoDB基础入门到高级进阶

    MongoDB的客户端连接和常用命令操作 SpringDataMongoDB对MongoDB的操作 MongoDB的索引和操作 MongoDB的安全认证 4、主讲内容 基础入门部分 章节一:MongoDB相关概念 章节二:单机部署 章节三:基本常用命令 章节四:...

    MongoDB Shell 命令实例总结【进阶篇】

    主要介绍了MongoDB Shell 命令,结合实例形式总结分析了MongoDB数据库常用的查询、更新、插入、集合、函数等相关操作技巧与注意事项,需要的朋友可以参考下

    mongodb下载与常用命令

    二 常用命令 查看当前的数据库:db 查看所有的数据库:show dbs /show databases 切换数据库:use db_name 删除当前的数据库:db.dropDatabase()   创建集合: 向不存在的集合中第⼀次加⼊数据时, 集合会被创建...

    深入云计算 MongoDB管理与开发实战详解pdf.part1

    本书旨在帮助云计算初学者迅速掌握MongoDB数据库,提升读者在云计算实践中的应用和开发能力。同时本书极强的系统性和大量翔实的案例对于有一定基础的中高级用户有非常好的参考价值。 第1篇 基础篇 第1章 MongoDB...

    mongo-php-library:MongoDB PHP库

    它包含客户端,数据库和集合对象的抽象,并提供用于CRUD操作和常用命令(例如,索引和集合管理)的方法。 如果要使用MongoDB开发应用程序,则应考虑使用此库或其他高级抽象,而不是单独使用扩展。 有关此库的体系...

    mongodb资料大全

    常用命令: mongod.exe --dbpath "d:\mongodb\data\db" --directoryperdb --logpath "d:\mongodb\data\logs" --logappend mongo.exe >show dbs >use memo //使用 数据库 memo >show collections //列出当前数据库的...

    MongoDB_Golang.zip

    driver这两个比较常用的MongoDB基础库,做了连接池初始化,model层服务封装,提供:初始化MongoDB连接池复用, MongoDB集合(类似MySQL的数据表)的增、删、改、查,事务、管道操作、聚合操作、mongoShell原生命令...

    深入云计算 MongoDB管理与开发实战详解pdf.part2

    本书旨在帮助云计算初学者迅速掌握MongoDB数据库,提升读者在云计算实践中的应用和开发能力。同时本书极强的系统性和大量翔实的案例对于有一定基础的中高级用户有非常好的参考价值。 第1篇 基础篇 第1章 MongoDB...

    mongodb使用心得简单总结

    1)mongo是一个面向文档的数据库,它集合了nosql和sql数据库两方面的特性。 2)所有实体都是在首次使用时创建。 3)没有严格的事务特性,但是它保证任何一次数据变更都是原子性的。 4)也没有固定的数据模型 5)...

    MongoDB释放空闲空间的几种常用方法

    当我们从MongoDB中删除文档或集合时,MongoDB并不会将已经占用了的磁盘空间释放,它会一直维护已经占用了磁盘空间的数据文件,尽管数据文件中可能存在大大小小的空记录列表(empty record list)。当客户端程序再次...

    MongoDB的mongo shell常用操作方法及操作脚本笔记

    一、常用命令 1、Help查看命令提示 help db.help(); db.yourColl.help(); db.youColl.find().help(); rs.help(); 2、切换/创建数据库 use yourDB; 当创建一个集合(table)的时候会自动创建当前数据库 3、查询所有...

Global site tag (gtag.js) - Google Analytics