1、登录和退出
登录可以直接使用
mongo连接数据库
、退出可以直接使用exit。
2、DataBase操作
2.1 查看服务器上的数据库
> show dbs
admin 0.000GB
config 0.000GB
local 0.000GB
>
2.2 创建数据库
使用use DataBaseName
> use test2
switched to db test2
> show dbs
admin 0.000GB
config 0.000GB
local 0.000GB
>
可以看到此时并没有看到新建立的test2数据库,是因为mongodb在只使用了use命令后,不会直接创建数据库,而是直到你插入数据之后。
> use test2
switched to db test2
> db.test.insert({"name":"hello word"})
WriteResult({ "nInserted" : 1 })
此命令为在test2数据库中创建test集合并插入一条数据
> show dbs
admin 0.000GB
config 0.000GB
local 0.000GB
test2 0.000GB
此时就可以看到test2数据库了
2.3 查看所有集合
> show collections
test
>
2.4 查看当前数据库
>db
tset2
2.5 删除数据库
> db.dropDatabase()
{ "dropped" : "test2", "ok" : 1 }
> show dbs
admin 0.000GB
config 0.000GB
local 0.000GB
>
> db
test2
删除test2库之后查看当前数据库还存在,一直到use其他数据库才会消失。
>
3、collection操作
3.1 新建collection
> db.createCollection("hello")
{ "ok" : 1 }
> > db.hello2.insert({"name":"zhangsan"})
WriteResult({ "nInserted" : 1 })
> show collections
hello
hello2
>
可以看出直接在不存在的集合中插入数据也是可以创建集合
> 3.2 重命名集合
> show collections
hello
hello2
> db.hello2.renameCollection("HELLO")
{ "ok" : 1 }
> show collections
HELLO
hello
>
可以看出mongodb区分大小写,而mysql是不区分大小写的。
>3.3 查看当前数据库中的所有collection
>show collections
>
4、索引操作
4.1 在HELLO集合上,建立对ID字段的索引,1代表升序。
> db.HELLO.ensureIndex({ID:1})
{
"createdCollectionAutomatically" : false,
"numIndexesBefore" : 1,
"numIndexesAfter" : 2,
"ok" : 1
}
>
4.2 在HELLO集合上,建立对ID字段、Name字段和Gender字段建立索引
> db.HELLO.ensureIndex({ID:1,Name:1,Gender:-1})
{
"createdCollectionAutomatically" : false,
"numIndexesBefore" : 2,
"numIndexesAfter" : 3,
"ok" : 1
}
4.3 查看HELLO集合上的所有索引
> db.HELLO.getIndexes()
[
{
"v" : 2,
"key" : {
"_id" : 1
},
"name" : "_id_"
},
{
"v" : 2,
"key" : {
"ID" : 1
},
"name" : "ID_1"
},
{
"v" : 2,
"key" : {
"ID" : 1,
"Name" : 1,
"Gender" : -1
},
"name" : "ID_1_Name_1_Gender_-1"
}
]
4.4 删除索引用db.collection.dropIndex(),有一个参数,可以是建立索引时指定的字段,也可以是getIndex看到的索引名称。
> db.HELLO.dropIndex( "IDIdx" )
{
"ok" : 0,
"errmsg" : "index not found with name [IDIdx]",
"code" : 27,
"codeName" : "IndexNotFound"
}
> db.HELLO.dropIndex({ID:1})
{ "nIndexesWas" : 3, "ok" : 1 }
>
4.5 添加数据
> db.HELLO.insert({"name":"baoyu","gender":"male"})
WriteResult({ "nInserted" : 1 })
4.6 查看集合中的数据
> db.HELLO.find()
{ "_id" : ObjectId("6063e0d3965131ea35eae193"), "name" : "zhangsan", "age" : "21" }
{ "_id" : ObjectId("6063e5b659dbfe121b7abc5e"), "name" : "baoyu", "gender" : "male" }
4.7 查询年龄为21的数据
> db.HELLO.find({"age":"21"})
{ "_id" : ObjectId("6063e0d3965131ea35eae193"), "name" : "zhangsan", "age" : "21" }
>
4.8 添加字段
db.HELLO.update({},{$set:{"sex":"21"}},true,true)
WriteResult({ "nMatched" : 3, "nUpserted" : 0, "nModified" : 3 })
> db.HELLO.find()
{ "_id" : ObjectId("6063e0d3965131ea35eae193"), "name" : "zhangsan", "age" : "21", "sex" : "21" }
{ "_id" : ObjectId("6063e5b659dbfe121b7abc5e"), "name" : "baoyu", "gender" : "male", "sex" : "21" }
{ "_id" : ObjectId("6063e75059dbfe121b7abc5f"), "name" : "jiaming", "gender" : "male", "sex" : "21" }
>
db.collection.update(criteria, objNew, upsert, multi )
criteria:update的查询条件,类似sql update查询内where后面的
objNew:update的对象和一些更新的操作符(如$,$inc...)等,也可以理解为sql update查询内set后面的。
upsert : 如果不存在update的记录,是否插入objNew,true为插入,默认是false,不插入。
multi : mongodb默认是false,只更新找到的第一条记录,如果这个参数为true,就把按条件查出来多条记录全部更新。