學習筆記之MongoDB基礎命令
- 1.選擇資料庫
命令: use DATEBASE_NAME(資料庫名)
作用:若沒有該資料庫則直接建立,若有則切換資料庫
執行效果如下:
use runoob
switched to db runoob
db
runoob
- 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: ‘
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 :可選,使用投影操作符指定返回的鍵。查詢時返回文件中所有鍵值, 只需省略該引數即可(預設省略)。