MongoDB 基本使用

数据库基本操作


连接到mongoDB服务器 
1
. /bin/mongo  127.0.0.1:12345 

查看当前数据库
1
2
3
> show dbs
admin  (empty)
local   0.078G

却换数据库(如果不存在会自动创建)
1
2
> use jerome
switched to db jerome

删除数据库
1
2
> db.dropDatabase()
"dropped"  "jerome" "ok"  : 1 }

删除表
1
2
3
4
5
6
7
8
9
10
> > show tables
jerome_collection
jerome_coolection
system.indexes
> db.jerome_collection.drop()
true
> show tables #删除了当前表了
jerome_coolection
system.indexes

写入


1
2
> db.jerome_collection.insert({x:1}) #集合数据的写入,格式为JSON
WriteResult({  "nInserted"  : 1 })

查询


1
2
3
4
5
6
7
8
9
10
11
> show dbs
admin   (empty)
jerome  0.078GB
local    0.078GB
> show collections
jerome_collection
system.indexes
> db.jerome_collection. find ()
"_id"  : ObjectId( "556fd29a4e8b96c5ebc42e63" ),  "x"  : 1 }
> db.jerome_collection. find ({x:1})     #可以指定参数
"_id"  : ObjectId( "556fd29a4e8b96c5ebc42e63" ),  "x"  : 1 } #_id是全局字段,在数据库中不会重复

插入多条数据测试limit等
1
2
3
4
5
6
7
8
for (i=3;i<100;i++)db.jerome_collection.insert({x:i}) #可以使用js语法
WriteResult({  "nInserted"  : 1 })
> db.jerome_collection. find ().count() #查找总条数
99
> db.jerome_collection. find ().skip(3).limit(2). sort ({x:1}) #跳过前三条,取两条,使用x排序
"_id"  : ObjectId( "556ff5e8d7e60a53de941a74" ),  "x"  : 4 }
"_id"  : ObjectId( "556ff5e8d7e60a53de941a75" ),  "x"  : 5 }

更新


1
2
3
4
5
6
7
8
> db.jerome_collection. find ({x:1})
"_id"  : ObjectId( "556fd29a4e8b96c5ebc42e63" ),  "x"  : 1 }
db.jerome_collection.update({x:1},{x:999}) #两个参数,一个查找的,一个更新的数据。
WriteResult({  "nMatched"  : 1,  "nUpserted"  : 0,  "nModified"  : 1 })
> db.jerome_collection. find ({x:1}) #已经找不到了
> db.jerome_collection. find ({x:999}) 
"_id"  : ObjectId( "556fd29a4e8b96c5ebc42e63" ),  "x"  : 999 }
 
部分更新操作符(set  
1
2
3
4
5
6
7
> db.jerome_collection.insert({x:100,y:100,z:100})
WriteResult({  "nInserted"  : 1 })
> db.jerome_collection.update({z:100},{$set:{y:99}})
WriteResult({  "nMatched"  : 1,  "nUpserted"  : 0,  "nModified"  : 1 })
> db.jerome_collection. find ({z:100})
"_id"  : ObjectId( "556ff84a1c99195ded71252e" ),  "x"  : 100,  "y"  : 99,  "z"  : 100 }

更新不存在数据时会自动创建
1
2
3
4
5
6
7
8
9
10
> db.jerome_collection. find ({y:100})
db.jerome_collection.update({y:100},{y:999},true)
WriteResult({
     "nMatched"  : 0,
     "nUpserted"  : 1,
     "nModified"  : 0,
     "_id"  : ObjectId( "556ff9556db7cf8009b5edf8" )
})
> db.jerome_collection. find ({y:999})
"_id"  : ObjectId( "556ff9556db7cf8009b5edf8" ),  "y"  : 999 }

更新多条数据
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
for (i=0;i<3;i++)db.jerome_collection.insert({c:2}) #插入三条
WriteResult({  "nInserted"  : 1 })
> db.jerome_collection. find ({c:2}) 
"_id"  : ObjectId( "556ffa011c99195ded71252f" ),  "c"  : 2 }
"_id"  : ObjectId( "556ffa011c99195ded712530" ),  "c"  : 2 }
"_id"  : ObjectId( "556ffa011c99195ded712531" ),  "c"  : 2 }
> db.jerome_collection.update({c:2},{c:3}) #更新
WriteResult({  "nMatched"  : 1,  "nUpserted"  : 0,  "nModified"  : 1 })
> db.jerome_collection. find ({c:2})
"_id"  : ObjectId( "556ffa011c99195ded712530" ),  "c"  : 2 }
"_id"  : ObjectId( "556ffa011c99195ded712531" ),  "c"  : 2 }
> db.jerome_collection. find ({c:3}) #发现只更新一条,是为了防止误操作
"_id"  : ObjectId( "556ffa011c99195ded71252f" ),  "c"  : 3 }
> db.jerome_collection.update({c:2},{$set:{c:3}},false,true#更新多条
WriteResult({  "nMatched"  : 2,  "nUpserted"  : 0,  "nModified"  : 2 })
> db.jerome_collection. find ({c:2})
> db.jerome_collection. find ({c:3})
"_id"  : ObjectId( "556ffa011c99195ded71252f" ),  "c"  : 3 }
"_id"  : ObjectId( "556ffa011c99195ded712530" ),  "c"  : 3 }
"_id"  : ObjectId( "556ffa011c99195ded712531" ),  "c"  : 3 }

删除


1
2
3
4
5
6
7
8
9
10
11
12
13
14
> db.jerome_collection. find ({c:3})
"_id"  : ObjectId( "556ffa011c99195ded71252f" ),  "c"  : 3 }
"_id"  : ObjectId( "556ffa011c99195ded712530" ),  "c"  : 3 }
"_id"  : ObjectId( "556ffa011c99195ded712531" ),  "c"  : 3 }
> db.jerome_collection.remove() #不可用
2015-06-04T00:15:34.444-0700 remove needs a query at src /mongo/shell/collection .js:299
> db.jerome_collection. find ({c:3})
"_id"  : ObjectId( "556ffa011c99195ded71252f" ),  "c"  : 3 }
"_id"  : ObjectId( "556ffa011c99195ded712530" ),  "c"  : 3 }
"_id"  : ObjectId( "556ffa011c99195ded712531" ),  "c"  : 3 }
db.jerome_collection.remove({c:3}) #删除必须要有参数
WriteResult({  "nRemoved"  : 3 })
> db.jerome_collection. find ({c:3}) #删除成功

索引


        数据较多时,使用索引速度加快查询。

        查看集合索引情况
1
2
3
4
5
6
7
8
9
10
11
12
13
14
for (i=0;i<100;i++)db.jerome_collection.insert({x:i}) #添加测试数据
WriteResult({  "nInserted"  : 1 })
> db.jerome_collection.getIndexes() #只有一个默认索引
[
     {
         "v"  : 1,
         "key"  : {
             "_id"  : 1
         },
         "name"  "_id_" ,
         "ns"  "jerome.jerome_collection"
     }
]

        创建索引
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
db.jerome_collection.ensureIndex({x:1}) #1代表正向排序,-1代表反向排序
{
     "createdCollectionAutomatically"  false ,
     "numIndexesBefore"  : 1,
     "numIndexesAfter"  : 2,
     "ok"  : 1
}
> db.jerome_collection.getIndexes()
[
     {
         "v"  : 1,
         "key"  : {
             "_id"  : 1
         },
         "name"  "_id_" ,
         "ns"  "jerome.jerome_collection"
     },
     {
         "v"  : 1,
         "key"  : {
             "x"  : 1
         },
         "name"  "x_1" ,
         "ns"  "jerome.jerome_collection"
     }
]
        索引虽然会使写入的数度变慢,但是查询的速度变快了。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值