MongoDB的 基本使用与命令

一、mongodb可视化工具

使用NoSQL Manager for MongoDB客户端连接mongodb

二、数据库基本命令

启动MongoDB并连接shell客户端

执行:mongo 10.208.36.171:7659/admin -u mongo -p 70ee0de168d239de

1、show dbs

显示当前数据库服务器上的数据库

2、use pagedb

切换到指定数据库pagedb的上下文,可以在此上下文中管理pagedb数据库以及其中的集合等

3、show collections

显示数据库中所有的集合(collection)

4、db.serverStatus()

查看数据库服务器的状态。

5、查询指定数据库统计信息

use fragment

db.stats()

6、查询指定数据库包含的集合名称列表

db.getCollectionNames()

三、数据库DDL和DML

1、创建数据库

在MongoDB中,你可以直接通过use dbname来切换到这个数据库上下文下面,系统会自动延迟创建该数据库

2、删除数据库

直接使用db.dropDatabase()即可删除数据库。

3、创建集合

可以使用命令db.createCollection(name, { size : …, capped : …, max : … } )创建集合

4、删除集合

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

5、插入更新记录

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

db.storeCollection.save({‘version’:’3.5′, ‘segment’:’e3ol6′})

6、查询一条记录

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

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

7、查询多条记录

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

8、删除记录

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

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

9、创建索引

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

1 > use pagedb
2 switched to db pagedb
3 > db.page.ensureIndex({'title':1, 'url':-1})
4 > db.system.indexes.find()
5 { "name" : "_id_", "ns" : "pagedb.page", "key" : { "_id" : 1 }, "v" : 0 }
6 { "name" : "_id_", "ns" : "pagedb.system.users", "key" : { "_id" : 1 }, "v" : 0}
7 { "_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()可以查询全部索引。

10、查询索引

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

 1 > db.page.getIndexes()
 2 [
 3         {
 4                 "name" : "_id_",
 5                 "ns" : "pagedb.page",
 6                 "key" : {
 7                         "_id" : 1
 8                 },
 9                 "v" : 0
10         },
11         {
12                 "_id" : ObjectId("4ef977633c1fc4613425accd"),
13                 "ns" : "pagedb.page",
14                 "key" : {
15                         "title" : 1,
16                         "url" : -1
17                 },
18                 "name" : "title_1_url_-1",
19                 "v" : 0
20         }
21 ]

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

11、删除索引

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

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

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

 

12、索引重建

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

 1 > db.page.reIndex()
 2 {
 3         "nIndexesWas" : 2,
 4         "msg" : "indexes dropped for collection",
 5         "ok" : 1,
 6         "nIndexes" : 2,
 7         "indexes" : [
 8                 {
 9                         "name" : "_id_",
10                         "ns" : "pagedb.page",
11                         "key" : {
12                                 "_id" : 1
13                         },
14                         "v" : 0
15                 },
16                 {
17                         "_id" : ObjectId("4ef977633c1fc4613425accd"),
18                         "ns" : "pagedb.page",
19                         "key" : {
20                                 "title" : 1,
21                                 "url" : -1
22                         },
23                         "name" : "title_1_url_-1",
24                         "v" : 0
25                 }
26         ],
27         "ok" : 1
28 }

13、统计集合记录数

use fragment

db.baseSe.count()

统计结果,如下所示:

1 > use fragment
2 switched to db fragment
3 > db.baseSe.count()
4 36749

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

14、查询并统计结果记录数

use fragment

db.baseSe.find().count()

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

1 > use fragment
2 switched to db fragment
3 > db.baseSe.find().count()
4 36749

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

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

use fragment
> db.baseSe.storageSize()
142564096

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

> db.baseSe.totalSize()

144096000

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

You May Also Like

About the Author: daidai5771

发表评论

电子邮件地址不会被公开。 必填项已用*标注