程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> SyBase數據庫 >> SyBase教程 >> mongoDB基本使用(二)

mongoDB基本使用(二)

編輯:SyBase教程

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 }   刪除表  
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"
    }
]

 

  (使用數據庫之前創建索引更好)   索引雖然會使寫入的數度變慢,但是查詢的速度變快了。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved