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
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等
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至少接收兩個參數,一個查找的,一個更新的數據。
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 )
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 }
更新不存在數據時會自動創建
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 }
更新多條數據
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 }
刪除 (必須要有參數)
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}) #刪除成功
索引 數據較多時,使用索引速度加快。 查看集合索引情況
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代表反向排序
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" } ]
(使用數據庫之前創建索引更好) 索引雖然會使寫入的數度變慢,但是查詢的速度變快了。