欢迎投稿

今日深度:

mongoDB基本使用(二),mongodb使用

mongoDB基本使用(二),mongodb使用


数据库基本操作

连接到mongoDB服务器 ./bin/mongo 127.0.0.1:12345 
查看当前数据库 > show dbs admin  (empty) local  0.078G
却换数据库(如果不存在会自动创建) > use jerome switched to db jerome
删除数据库 > 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

写入

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

查询

> 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是全局字段,在数据库中不会重复)
测试:再插入一条数据_id为1
1 2 3 4 5 6 7 8 9 10 11 > db.jerome_collection.insert({x:3,_id:1}) WriteResult({ "nInserted" : 1 }) > db.jerome_collection.insert({x:2,_id:1}) WriteResult({     "nInserted" : 0,     "writeError" : {         "code" : 11000,         "errmsg" "insertDocument :: caused by :: 11000 E11000 duplicate key error index: jerome.jerome_collection.$_id_  dup key: { : 1.0 }"     } })
插入两次一样的id会报错,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 }

更新

Updata至少接收两个参数,一个查找的,一个更新的数据。
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代表正向排序,-1代表反向排序
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}) {     "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"     } ]
(使用数据库之前创建索引更好)
索引虽然会使写入的数度变慢,但是查询的速度变快了。

www.htsjk.Com true http://www.htsjk.com/shujukunews/8575.html NewsArticle mongoDB基本使用(二),mongodb使用 数据库基本操作 连接到mongoDB服务器 ./bin/mongo 127.0.0.1:12345 查看当前数据库 show dbsadmin (empty)local 0.078G 却换数据库(如果不存在会自动创建) use jeromeswitc...
评论暂时关闭