mongodb學習(二)-mongodb基本操作
mongodb基本操作
@(mongodb)
基本操作
資料庫和表操作
show bds
檢視資料庫
use test
切換資料庫
db.dropDatabase()
刪除當前資料庫
use test
直接切換到資料庫,mongo會在適當的時候自動建立資料庫
db.test_collection.drop()
刪除表
插入
db.test_collection.insert()
建立表並插入資料,資料格式為json, 如果json物件中不包含_id
則會自動建立一個全域性唯一的_id
,支援插入多條資料
db.test_collection.insert({x:1})
db.test_collection.insert({x:1,_id:1})
for(i = 3; i < 100; i ++)db.test_collection.insert({x:i})
使用js語法插入100條資料
允許先定義一個物件,再進行插入
> document=({x:1,y:2})
> db.test_collection.insert(document)
更新
格式
db.collection.update(
<query>,
<update>,
{
upsert: <boolean >,
multi: <boolean>,
writeConcern: <document>
}
)
引數說明:
- query : update的查詢條件,類似sql update查詢內where後面的。
- update : update的物件和一些更新的操作符(如
- upsert : 可選,這個引數的意思是,如果不存在update的記錄,是否插入objNew,true為插入,預設是false,不插入。
- multi : 可選,mongodb 預設是false,只更新找到的第一條記錄,如果這個引數為true,就把按條件查出來多條記錄全部更新。
- writeConcern :可選,丟擲異常的級別。
db.test_collection.insert({x:1,y:2})
db.test_collection.update({x:1},{z:3})
更新x為1的資料,覆蓋所有其他資料,只剩下z:3
更新後為{z:3}
db.test_collection.update({x:1},{$set:{z:3}})
更新x為1的資料,增加或者修改z:3
,其他欄位保持不變
db.test_collection.update({y:100},{y:999},true)
第三個引數表示如果y:100
的資料不存在則建立一條{y:999}
的 資料
db.test_collection.update({x:10},{$set:{z:1200}}, false, true)
第三個引數false表示不存在也不建立,第四個引數true表示當有多條符合更新要求的資料記錄時會批量更新,此時必須使用$set操作符
在3.2版本開始,MongoDB提供以下更新集合文件的方法:
db.collection.updateOne()
向指定集合更新單個文件
db.collection.updateMany()
向指定集合更新多個文件
db.test_collection.updateOne({"name":"abc"},{$set:{"age":"28"}})
name是abc的age設定為28
db.test_collection.updateMany({"age":{$gt:"10"}},{$set:{"status":"xyz"}})
age大於10的status設定為xyz
刪除
格式
db.collection.remove(
<query>,
{
justOne: <boolean>,
writeConcern: <document>
}
)
引數說明:
- query :(可選)刪除的文件的條件。
- justOne : (可選)如果設為 true 或 1,則只刪除一個文件。
- writeConcern :(可選)丟擲異常的級別。
db.test_collection.remove({c:2})
刪除所有c:2
的資料,remove必須填條件,不能為空
db.test_collection.remove({c:2},1)
刪除一條c:2
的資料
現在的最新版本中,remove()
方法已經過時了,現在官方推薦使用 deleteOne()
和 deleteMany()
方法
db.inventory.deleteMany({})
刪除集合下全部文件:
db.inventory.deleteMany({ status : "A" })
刪除 status 等於 A 的全部文件:
db.inventory.deleteOne( { status: "D" }
刪除 status 等於 D 的一個文件:
查詢
show collections
檢視建立的表
db.test_collections.find()
預設查詢所有的記錄,可以為空。
db.test_collections.find({x:1})
查詢符合x:1
的記錄
db.test_collections.find().count()
查詢滿足條件的數目
db.test_collections.find().skip(3).limit(2).sort({x:1})
忽略前三行,取兩條資料,按照x排序
db.test_collections.find().pretty()
pretty() 方法以格式化的方式來顯示所有文件,更好看。
查詢多個條件用逗號隔開
查詢條件
操作 | mongo | sql |
---|---|---|
小於 | db.col.find({"likes":{$lt:50}}).pretty() |
where likes < 50 |
小於或等於 | db.col.find({"likes":{$lte:50}}).pretty() |
where likes <= 50 |
大於 | db.col.find({"likes":{$gt:50}}).pretty() |
where likes > 50 |
大於或等於 | db.col.find({"likes":{$gte:50}}).pretty() |
where likes >= 50 |
不等於 | db.col.find({"likes":{$ne:50}}).pretty() |
where likes != 50 |