MongoDB 之 增刪改查
阿新 • • 發佈:2018-11-11
對於mongodb,使用了不存在的物件,就等於在建立這個物件
一, 建立資料庫
注意:操作資料庫的方式:db.表名(Collections).操作(引數)
二,增
插入資料(insert insertOne insertMany)
insert:插入一條或者多條資料,需要帶有允許插入多條的引數,這個方法目前官方已經不推薦
使用insertOne插入一條資料:
db.user.insertOne({id: 4, name: "qqq", age: 20}) # 插入一條資料 db.user.insertMany([{id: 7, name: "www", age: 20}, {id: 8},{id:9}]) # 插入多條資料
三,刪
db.user.remove({}) # 官方不推薦使用了
db.user.deleteOne({id:7}) # 刪除一條id=7的資料 db.user.deleteMany({name:"ttt"}) # 刪除所有name=“ttt"的資料 db.user.deleteMany({}) # 清空資料庫 db.user.drop() # 清空資料庫
三, 改
db.user.updateOne({id:1},{$set:{name:"花大炮"}}) # 修改id為1的資料的 name為花大炮 db.user.updateMany({age:20},{$set:{name:"jjj"}}) # 修改age=20的所有資料的 name為"jjj" db.user.updateMany({age:20},{$set:{hobby: ["ooo", "xxx"]}}) # 可以直接修改為一個數組
針對Field的$修改器
$set 修改器之一 設定 將某Key設定為某值:
db.user.updateMany({age:20},{$set:{name:"jjj"}})
$unset:刪除當前的Fields
db.user.updateOne({id:7}, {$unset: {hobby: "" }}) # 把id為7的資料,刪除hobby這個欄位 db.user.updateOne({id:4}, {$unset: {hobby: 0 }}) # 把id為4的資料,刪除hobby這個欄位
$inc 在原有值基礎上增加 (int型別,就是增加或減少之(負數),string型別,就是字串拼接)
db.user.updateOne({name:"mmm"},{$inc: {age:5}}) # 給name="mmm"的資料,的age在原來的基礎上加上5
針對Arrays的$修改器
$push 在Arrays中新增一個元素
db.user.updateOne({name: "mmm"},{$push:{hobby:"哈哈"}}) # 給name="mmm"的資料中的hobby對於的值(列表),中新增一個值為"哈哈” db.user.updateOne({name: "jjj"},{$push: {hobby: "dfd"}}) # 該條資料沒有欄位hobby,則建立一個hobby,把資料放進
db.user.updateOne({name:"mmm"},{$push:{hobby: ["ccc","vvv", "bbb"]}}) 只新增第一個進去
db.user.updateOne({name:"mmm"},{$pushAll:{hobby: ["ccc","vvv", "bbb"]}}) 把列表整體新增進去
$pull 在Arrays中刪除一個元素
db.user.updateOne({name:"mmm"},{$pull: {hobby:"ccc"}}) # 在name=mmm這條資料的hobby對應的列表中刪掉ccc
$pop 在Arrays中刪除最後一個元素或第一個元素
db.user.updateOne({name:"mmm"}, {$pop: {hobby:-1}}) 刪除第一個 db.user.updateOne({name: "mmm"},{$pop:{hobby: 1}}) 刪除最後一個
$ : 儲存 滿足前置條件列表元素的下標索引
db.user.updateOne({name: "mmm", hobby: "哈哈"},{$set:{"hobby.$": "大西瓜"}}) # 將name="mmm"這條資料中的hobby對應的列表中的 “哈哈”,改成“大西瓜” 上面的$就是記錄前面的"哈哈"在hobby中的索引,所以也可以直接這麼寫: db.user.updateOne({name: "mmm"},{$set:{"hobby.0": "綠蘋果"}}) # 修改name="mmm"的資料中的hobby索引為0的值為"綠蘋果" db.user.updateOne({name: "mmm"},{$set:{"hobby.1": "大西瓜"}})
混合用法
db.user.updateOne({name:"hhh"},{$set:{course:[ {course_name: "python", score:100}, {course_name: "vue", score:101}, {course_name: "mysql", score:99} ]}}) # 插入資料 db.user.updateOne({name: "hhh", "course.course_name":"python"},{$inc:{"course.$.score": 10}}) # $獲取了前面資料的索引 db.user.updateOne({name: "hhh"},{$inc:{"course.0.score": 20}})
四,查
db.user.find({}) # 查詢所有資料 db.user.findOne({name:"lll"}) # 查詢name=“lll"的資料
$lt 小於 $gt 大於 $lte 小於等於 $gte 大於等於 $eq : 等於
db.user.find({age:{$lte:19}}) # 查詢age小於等於19的資料 db.user.find({age:{$gt:19}}) # 查詢age大於19的資料
查詢$關鍵字:
{ "_id" : ObjectId("5bc6eac2613e5c72d4c888b0"), "id" : 10, "name" : "mmm", "age" : 30, "hobby" : [ "綠蘋果", "大西瓜", "小紅棗", "ccc", "vvv" ] }
對於上述資料:
$all 滿足所有元素的資料
db.user.find({hobby: {$all: ["大西瓜"]}}) # 可以找到 db.user.find({hobby: {$all: ["大西瓜", "ccc"]}}) # 可以找到 # 主要元素在資料中,就可以找到,可以和原始資料不一樣!
$in 滿足其中一個元素的資料
db.user.find({hobby: {$in: ["ccc", "vvv"]}}) # 資料在要查詢資料的hobby中就可以查到
$or 滿足其中一個欄位的資料
db.user.find({$or: [{name:"lll"}, {id:1}]}) # 查詢 name=”lll“ 或者 id=1的資料 db.user.deleteMany({$or:[{id:8},{id:9}]}) # 刪除id=8 或者 id=9的資料
limit(x):
只查詢前x條資料
skip(x):
跳過前x條資料
sort({ id:-1 }):
根據id欄位進行倒序排列:-1 正序排列:1
分頁使用
db.user.find({}).sort({id:1}).skip(0).limit(3) # 第一頁 db.user.find({}).sort({id:1}).skip(3).limit(3) # 第二頁 db.user.find({}).sort({id:1}).skip(6).limit(3) # 第三頁 db.user.find({}).sort({id:1}).skip(9).limit(3) # 第四頁 db.user.find({}).sort({id:1}).skip(12).limit(3) # 第五頁