返回顶部

欢迎来到菜鸟大明儿哥的博客

我们一起交流学习,不断提升自我

MongoDB 使用及管理

一、基本数据类型

 

String − 字符串是最常用的数据类型,MongoDB中的字符串必须是UTF-8编码。
Integer − 整数类型用于存储数值。整数可以是32位,也可以是64位,这取决于你的服务器。
Boolean − 布尔类型用于存储布尔值(true/ false)。
Double − 双精度类型用于存储浮点值。
Min/ Max keys − 此类型用于将值与最低和最高的BSON元素进行比较。
Arrays − 此类型用于将数组、列表或多个值存储到一个键中。
Timestamp − ctimestamp。时间戳,用于记录文档何时被修改或创建。
Object − 这种数据类型用于嵌入文档。
Null − 此类型用于存储Null值。
Symbol − 此数据类型与字符串用法相同; 然而,它通常用于某些使用特定符号的语言。
Date − 此数据类型用于以UNIX时间格式存储当前日期或时间。您可以通过创建date对象,并将日、月、年传入其中,来指定自己的日期时间。
Object ID − 此数据类型用于存储文档的ID。
Binary data − 这种数据类型用于存储二进制数据。
Code − 此数据类型用于将JavaScript代码存储到文档中。
Regular expression − 此数据类型用于存储正则表达式。

 

二、创建数据库

1.use命令

MongoDB通过命令use 数据库名创建数据库。如果数据库不存在,该命令将创建一个数据库,否则将返回已有数据库。

语法: use 数据库名

例1

> use testdb
switched to db testdb

2.db命令 显示当前数据库

例2
> db testdb

3.show dbs命令 列出全部数据库

例3
> show dbs admin 0.000GB config 0.000GB local 0.000GB

刚创建的数据库(mydb)不在列表中,空数据库不会显示,需要向其插入至少一个文档。

例4
> use testdb

> db.site.insert({"name":"测试1"})

WriteResult({ "nInserted" : 1 })
> show dbs
admin   0.000GB
config  0.000GB
local   0.000GB
testdb    0.000GB

 

三、删除数据库

1.dropDatabase() 方法  用于删除数据库

语法:db.dropDatabase()

例5

> show dbs        查看数据库
admin 0.000GB
config 0.000GB
local 0.000GB
testdb 0.000GB


>use testdb    切换数据库
switched to db testdb

> db.dropDatabase()      删除testdb数据库
{ "dropped" : "mydb", "ok" : 1 }


> show dbs    再次查看数据库
admin 0.000GB
config 0.000GB
local 0.000GB

 

 

四、创建集合

1.createCollection() 方法

基本语法:db.createCollection(name, options)

命令中,name是要创建的集合名称,options是一个文档,用于指定集合的配置

参数         类型       描述
Name     String         要创建的集合名称
Options   Document   (可选)指定内存大小、索引等选项/td>

 

options参数是可选的,下面是可以使用的选项列表:

字段           类型           描述
capped         Boolean     (可选)如果为真,则启用有上限的集合。封顶集合是一个固定大小的集合,当它达到最大大小时自动覆盖其最老的条目。 如果指定为真,还需要指定size参数。
size           number     (可选)为有上限的集合指定最大字节大小。如果capped为真,那么还需要指定该字段。
max           number     (可选)指定上限集合中允许的最大文档数量。

在插入文档时,MongoDB首先检查封顶集合的size字段,然后检查max字段。

例1

> use mydb
switched to db mydb
> db.createCollection("mycollection")
{ "ok" : 1 }

可以使用show collections命令检查当前数据库中的集合。

> show collections
mycollection

 

例2

> db.createCollection("mycollection3", { capped : true, size : 6142800, max : 10000 } )
{ "ok" : 1 }

MongoDB中,不需要创建集合,当插入文档时,MongoDB自动创建集合。

> db.test.insert({"post": "mongodb"})
WriteResult({ "nInserted" : 1 })


> show collections
mycollection
mycollection2
mycollection3
test

 

五、删除集合

1.drop( )方法    用于从数据库中删除集合

基本语法:

db.COLLECTION_NAME.drop()

> use testdb
switched to db testdb
> show collections
mycollection
mycollection2
mycollection3
test

现在删除名为mycollection2的集合

> db.mycollection2.drop()
true

如果集合被成功删除,drop()方法将返回true,否则返回false

再次到数据库中检查集合列表
> show collections
mycollection
mycollection3
test

六、插入更新记录

直接使用集合的save方法,如下所示

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

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

 

七、查询记录

1.查询一条记录

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

 

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

2.查询多条记录

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

> db.storeCollection.find()
{ "_id" : ObjectId("5de4ca25aa2840f0e82dcecc"), "version" : "3.5", "segment" : "e3ol6" }

 

八、删除记录

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

> db.storeCollection.remove({'version':'3.5'})
WriteResult({ "nRemoved" : 1 })
> db.storeCollection.findOne()
null

 

九、创建索引

可以使用集合的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()可以查询全部索引。

 

十、查询索引

我们为集合建立的索引,那么可以通过集合的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()函数。

 

十一、删除索引

db.mycoll.dropIndex(name)  删除指定名称索引

db.mycoll.dropIndexs()  删除指定集合的所有索引

 

十二、索引重建

可以通过集合的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
}

 

十三、db.baseSe.count()  统计集合记录数

 

> use test 
switched to db test
> db.baseSe.count()
300

上述统计了数据库test的baseSe集合中记录数。

 

十四、db.baseSe.find().count()查询并统计结果记录数

find()可以提供查询参数,然后查询并统计结果

> use test 
switched to db test 
> db.baseSe.find().count() 
300

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

 

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

 db.baseSe.storageSize()

> db.baseSe.storageSize()
142564096

 

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

> db.baseSe.totalSize()

144096000

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

 

十七、启动与终止

1、正常启动
mongod --dbpath /usr/mongo/data --logfile /var/mongo.log
说明:
指定数据存储目录和日志目录,如果采用安全认证模式,需要加上--auth选项,如:
mongod --auth --dbpath /usr/mongo/data --logfile /var/mongo.log 
2、以修复模式启动
mongod --repair
以修复模式启动数据库。
实际很可能数据库数据损坏或数据状态不一致,导致无法正常启动MongoDB服务器,根据启动信息可以看到需要进行修复。或者执行:
mongod -f /etc/mongodb.conf --repair
3、终止服务器进程
db.shutdownServer()
终止数据库服务器进程。或者,可以直接kill掉mongod进程即可。
 

 

 十八、命令及帮助

1.help帮助文档

 

> help

 

 

  

 

2.db.serverStatus()  查看数据库状态

有时,通过查看数据库服务器的状态,可以判断数据库是否存在问题,如果有问题,如数据损坏,可以及时执行修复

3.查询指定数据库统计信息

use <DBname>

db.stats()

 

> use test
switched to db test
> db.stats()
{
"db" : "test",
"collections" : 1,
"views" : 0,
"objects" : 1,
"avgObjSize" : 37,
"dataSize" : 37,
"storageSize" : 16384,
"numExtents" : 0,
"indexes" : 1,
"indexSize" : 16384,
"fsUsedSize" : 4523339776,
"fsTotalSize" : 90334732288,
"ok" : 1
}

显示test数据库的统计信息。

 

4.db.getCollectionNames()  查询指定数据库包含的集合名称列表

 

 



 

 
 

 



 
posted @ 2019-11-28 18:12  菜鸟大明儿哥  阅读(258)  评论(0编辑  收藏  举报