MongoDB常用指令

原创 zhaoliang  2015-03-29 15:36  阅读 988 views 次

(一)基本命令

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

(二)基本DDL和DML

1、创建数据库
如果你习惯了关系型数据库,你可能会寻找相关的创建数据库的命令。在MongoDB中,你可以直接通过use dbname来切换到这个数据库上下文下面,系统会自动延迟创建该数据库。
2、删除数据库
使用use指令切换到要删除的数据库内,直接使用db.dropDatabase()即可删除数据库。
3、创建集合
可以使用命令db.createCollection(集合的名称, { size : ..., capped : ..., max : ... } )创建集合。
4、删除集合
删除集合,可以执行db.集合名.drop()。例如:集合名是user,删除user时,使用命令db.user.drop()即可
5、插入更新记录
使用db.集合名.insert({key:value,key,value.....})插入新记录;
使用db.集合名.update(,,{upsert: ,multi: ,writeConcern: })更新记录
参数说明:
query : update的查询条件,类似sql update查询内where后面的。
update : update的对象和一些更新的操作符(如$,$inc...)等,也可以理解为sql update查询内set后面的
upsert : 可选,这个参数的意思是,如果不存在update的记录,是否插入objNew,true为插入,默认是false,不插入。
multi : 可选,mongodb 默认是false,只更新找到的第一条记录,如果这个参数为true,就把按条件查出来多条记录全部更新。
writeConcern :可选,抛出异常的级别。
示例:

> db.t.find()
{ "_id" : ObjectId("5906effda450e8b035e09773"), "name" : "Jike", "sex" : "male", "age" : 30 }
{ "_id" : ObjectId("5906f007a450e8b035e09774"), "name" : "Mike", "sex" : "male", "age" : 29 }
{ "_id" : ObjectId("5906f045a450e8b035e09775"), "name" : "Lucy", "sex" : "female", "age" : 25 }
> db.t.update({'name':'Jike'},{$set:{'age':35}});
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
> db.t.find()
{ "_id" : ObjectId("5906effda450e8b035e09773"), "name" : "Jike", "sex" : "male", "age" : 35 }
{ "_id" : ObjectId("5906f007a450e8b035e09774"), "name" : "Mike", "sex" : "male", "age" : 29 }
{ "_id" : ObjectId("5906f045a450e8b035e09775"), "name" : "Lucy", "sex" : "female", "age" : 25 }
> db.t.update({'sex':'male'},{$set:{'age':35}},{multi:true});
WriteResult({ "nMatched" : 2, "nUpserted" : 0, "nModified" : 1 })
> db.t.find()
{ "_id" : ObjectId("5906effda450e8b035e09773"), "name" : "Jike", "sex" : "male", "age" : 35 }
{ "_id" : ObjectId("5906f007a450e8b035e09774"), "name" : "Mike", "sex" : "male", "age" : 35 }
{ "_id" : ObjectId("5906f045a450e8b035e09775"), "name" : "Lucy", "sex" : "female", "age" : 25 }
> db.t.update({'sex':'male'},{$set:{'age':30}},{multi:true});
WriteResult({ "nMatched" : 2, "nUpserted" : 0, "nModified" : 2 })

 

也可直接使用集合的save方法,如下所示:
使用save方法,如果带有_id值则会将原来的记录值进行覆盖实现记录更新,如果不带_id则会写入一条新记录。
6、查询一条记录
使用findOne()函数,参数为查询条件,可选,系统会随机查询获取到满足条件的一条记录(如果存在查询结果数量大于等于1)示例如下所示:
db.集合名.findOne({'属性名':'值'})

> db.t.find()
{ "_id" : ObjectId("5906effda450e8b035e09773"), "name" : "Jike", "sex" : "male", "age" : 30 }
{ "_id" : ObjectId("5906f007a450e8b035e09774"), "name" : "Mike", "sex" : "male", "age" : 29 }
{ "_id" : ObjectId("5906f045a450e8b035e09775"), "name" : "Lucy", "sex" : "female", "age" : 25 }
> db.t.findOne()
{
        "_id" : ObjectId("5906effda450e8b035e09773"),
        "name" : "Jike",
        "sex" : "male",
        "age" : 30
}
> db.t.findOne({'age':29})
{
        "_id" : ObjectId("5906f007a450e8b035e09774"),
        "name" : "Mike",
        "sex" : "male",
        "age" : 29
}

7、查询多条记录 使用find()函数,参数指定查询条件,不指定条件则查询全部记录。
db.集合名.find()
8、删除记录 使用集合的remove()方法,参数指定为查询条件,示例如下所示:
db.集合名.remove({'属性名':'值'})
9、创建索引
可以使用集合的ensureIndex(keypattern[,options])方法,示例如下所示:
10、查询索引 我们为集合建立的索引,那么可以通过集合的getIndexes()方法实现查询,示例如下所示:
11、删除索引
删除索引给出了两个方法:
db.集合名.dropIndex(name) 删除指定索引名称
db.集合名.dropIndexes() 删除指定集合的全部索引。

> db.t.getIndexes()
[
        {
                "v" : 2,
                "key" : {
                        "_id" : 1
                },
                "name" : "_id_",
                "ns" : "test.t"
        }
]
> db.t.ensureIndex({'age':1})
{
        "createdCollectionAutomatically" : false,
        "numIndexesBefore" : 1,
        "numIndexesAfter" : 2,
        "ok" : 1
}
> db.t.getIndexes()
[
        {
                "v" : 2,
                "key" : {
                        "_id" : 1
                },
                "name" : "_id_",
                "ns" : "test.t"
        },
        {
                "v" : 2,
                "key" : {
                        "age" : 1
                },
                "name" : "age_1",
                "ns" : "test.t"
        }
]
> db.t.dropIndex({'age':1})
{ "nIndexesWas" : 2, "ok" : 1 }

12、索引重建 可以通过集合的reIndex()方法进行索引的重建,示例如下所示:
> db.集合名.reIndex()
13、统计集合记录数
db.集合名.count()
14、查询并统计结果记录数
db.集合名.find().count()
find()可以提供查询参数,然后查询并统计结果,如下所示:
上述执行先根据查询条件查询结果,然后统计了查询数据库fragment的baseSe结果记录集合中记录数。
15、查询指定数据库的集合当前可用的存储空间
> db.集合名.storageSize()
142564096
16、查询指定数据库的集合分配的存储空间
> db.集合名.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进程即可。

本文地址:http://blog.58cm.cn:8088/archives/18.html
版权声明:本文为原创文章,版权归 zhaoliang 所有,欢迎分享本文,转载请保留出处!

评论已关闭!