1. 程式人生 > >學習筆記之MongoDB基礎命令

學習筆記之MongoDB基礎命令

  1. 1.選擇資料庫

命令: use DATEBASE_NAME(資料庫名)
作用:若沒有該資料庫則直接建立,若有則切換資料庫
執行效果如下:

use runoob
switched to db runoob
db
runoob

  1. 2.檢視當前所有的資料庫

命令:show dbs
執行效果如下:

show dbs
ad 0.000GB
admin 0.000GB
config 0.000GB
local 0.000GB
mycol 0.000GB
mycol001 0.000GB
name 0.000GB
nb 0.000GB


 1. **3.刪除資料庫操作**
命令:db.dropDatabase()
執行效果:

db.dropDatabase()
{ “dropped” : “name”, “ok” : 1 }

 **4.插入文件**

命令:db.COLLECTION_NAME.insert(document)
執行效果:

db.col.insert({name:”浪奇”,
年齡:”24”,
愛好:”飛啊飛”
})

可直接定義變數document

document=({title: ‘MongoDB 教程’,
description: ‘MongoDB 是一個 Nosql 資料庫’,
by: ‘菜鳥教程’,
url: ‘

http://www.runoob.com‘,
tags: [‘mongodb’, ‘database’, ‘NoSQL’],
likes: 100
})

定義變數後可直接使用
執行效果如下:

db.col.insert(document)
WriteResult({ “nInserted” : 1 })

       插入文件也可以使用 db.col.save(document) 命令。如果不指定 _id 欄位 save() 方法類似於 insert() 方法。如果指定 _id 欄位,則會更新該 _id 的資料

注意:3.2 版本後還有以下幾種語法可用於插入文件:
 db.collection
.insertOne():向指定集合中插入一條文件資料 db.collection.insertMany():向指定集合中插入多條文件資料
插入單條資料

var document=db.col.insertOne({“aa”:9})
document
{
“acknowledged” : true,
“insertedId” : ObjectId(“5a3761ac667e4339fe9b3a31”)
}

##### 插入多條資料
>

var res = db.collection.insertMany([{“b”: 3}, {‘c’: 4}])

res
{
“acknowledged” : true,
“insertedIds” : [
ObjectId(“571a22a911a82a1d94c02337”),
ObjectId(“571a22a911a82a1d94c02338”)
]
}

5.更新已有文件
命令:db.collection.update(
   query,
   update,
   {
     upsert: boolean,
     multi: boolean,
     writeConcern: document
   }
)
引數說明:
query : update的查詢條件,類似sql update查詢內where後面的。
update : update的物件和一些更新的操作符(如$,$inc...)等,也可以理解為sql update查詢內set後面的
upsert : 可選,這個引數的意思是,如果不存在update的記錄,是否插入objNew,true為插入,預設是false,不插入。
multi : 可選,mongodb 預設是false,只更新找到的第一條記錄,如果這個引數為true,就把按條件查出來多條記錄全部更新。
writeConcern :可選,丟擲異常的級別。

執行效果:`
######查詢集合內容
> db.col.find().pretty()                                          
{
        "_id" : ObjectId("5a375db0667e4339fe9b3a30"),
        "title" : "MongoDB",
        "description" : "MongoDB 是一個 Nosql 資料庫",
        "by" : "菜鳥教程",
        "url" : "http://www.runoob.com",
        "tags" : [
                "mongodb",
                "database",
                "NoSQL"
        ],
        "likes" : 100
}
#####修改某一欄位
> db.col.update({title:"MongoDB"},{$set:{title:"MongoDB   修改此欄位"}})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
#####再次查詢集合內容
> db.col.find().pretty()
{
        "_id" : ObjectId("5a375db0667e4339fe9b3a30"),
        "title" : "MongoDB   jjdfdjivnjds",
        "description" : "MongoDB 是一個 Nosql 資料庫",
        "by" : "菜鳥教程",
        "url" : "http://www.runoob.com",
        "tags" : [
                "mongodb",
                "database",
                "NoSQL"
        ],
        "likes" : 100
}
在3.2版本開始,MongoDB提供以下更新集合文件的方法:
  db.collection.updateOne() 向指定集合更新單個文件
  db.collection.updateMany() 向指定集合更新多個文件`
首先我們在test集合裡插入測試資料
>use test
>db.col.insert( [
{"name":"abc","age":"25","status":"zxc"},
{"name":"dec","age":"19","status":"qwe"},
{"name":"asd","age":"30","status":"nmn"},
] )
更新單個文件
> db.test_collection.updateOne({"name":"abc"},{$set:{"age":"28"}})
{ "acknowledged" : true, "matchedCount" : 1, "modifiedCount" : 1 }
> db.test_collection.find()
{ "_id" : ObjectId("59c8ba673b92ae498a5716af"), "name" : "abc", "age" : "28", "status" : "zxc" }
{ "_id" : ObjectId("59c8ba673b92ae498a5716b0"), "name" : "dec", "age" : "19", "status" : "qwe" }
{ "_id" : ObjectId("59c8ba673b92ae498a5716b1"), "name" : "asd", "age" : "30", "status" : "nmn" }
>
更新多個文件
> db.test_collection.updateMany({"age":{$gt:"10"}},{$set:{"status":"xyz"}})
{ "acknowledged" : true, "matchedCount" : 3, "modifiedCount" : 3 }
> db.test_collection.find()
{ "_id" : ObjectId("59c8ba673b92ae498a5716af"), "name" : "abc", "age" : "28", "status" : "xyz" }
{ "_id" : ObjectId("59c8ba673b92ae498a5716b0"), "name" : "dec", "age" : "19", "status" : "xyz" }
{ "_id" : ObjectId("59c8ba673b92ae498a5716b1"), "name" : "asd", "age" : "30", "status" : "xyz" }
>

WriteConcern.NONE:沒有異常丟擲
WriteConcern.NORMAL:僅丟擲網路錯誤異常,沒有伺服器錯誤異常
WriteConcern.SAFE:丟擲網路錯誤異常、伺服器錯誤異常;並等待伺服器完成寫操作。
WriteConcern.MAJORITY: 丟擲網路錯誤異常、伺服器錯誤異常;並等待一個主伺服器完成寫操作。
WriteConcern.FSYNC_SAFE: 丟擲網路錯誤異常、伺服器錯誤異常;寫操作等待伺服器將資料重新整理到磁碟。
WriteConcern.JOURNAL_SAFE:丟擲網路錯誤異常、伺服器錯誤異常;寫操作等待伺服器提交到磁碟的日誌檔案。
WriteConcern.REPLICAS_SAFE:丟擲網路錯誤異常、伺服器錯誤異常;等待至少2臺伺服器完成寫操作。

刪除文件

如刪除集合下全部文件:
db.colletion_name.deleteMany({})
刪除 status 等於 A 的全部文件:
db.colletion_name.deleteMany({ status : “A” })
刪除 status 等於 D 的一個文件:
db.colletion_name.deleteOne( { status: “D” } )。

查詢文件

命令:db.col.find(query,projection)
query :可選,使用查詢操作符指定查詢條件
projection :可選,使用投影操作符指定返回的鍵。查詢時返回文件中所有鍵值, 只需省略該引數即可(預設省略)。