1. 程式人生 > >mongodb學習(二)-mongodb基本操作

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的物件和一些更新的操作符(如,inc…)等,也可以理解為sql update查詢內set後面的
- 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