一、基本数据类型

 

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

MongoDB 经纬度 附近的人 mongodb double精度_MongoDB 经纬度 附近的人

 

 

  

 

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()  查询指定数据库包含的集合名称列表