日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

MongoDB 增删改查

發(fā)布時間:2025/5/22 编程问答 14 豆豆
生活随笔 收集整理的這篇文章主要介紹了 MongoDB 增删改查 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

MongoDB 增刪改查

    • 學習目標:
    • 學習內容:
    • 使用步驟
      • 數(shù)據(jù)庫
        • 創(chuàng)建數(shù)據(jù)庫
        • 刪除數(shù)據(jù)庫
      • 集合
        • 創(chuàng)建集合
        • 刪除集合
      • 文檔
        • 查找文檔
          • 使用 find()查找文檔
          • 使用 findOne()查找文檔
          • 使用 pretty()將結果格式化
          • 比較運算符
          • 范圍運算符
          • 邏輯運算符
          • 正則表達式
          • limit和skip
          • 自定義查詢
          • 投影
          • 排序
          • 統(tǒng)計個數(shù)
          • 消除重復
        • 添加文檔
          • 使用 insert()添加文檔
          • 使用 save()添加文檔
          • 使用 insertOne()添加文檔
          • 使用 insertMany()插入多條文檔
        • 更新文檔
        • 刪除文檔
    • 總結:

學習目標:

MongoDB的使用

環(huán)境:

Windows:10
MongoDB:5.0.2

MongoDB的安裝:https://blog.csdn.net/qq_44989881/article/details/119604129

學習內容:

MongoDB 數(shù)據(jù)庫的操作

1、 數(shù)據(jù)庫的增刪改查
2、集合的增刪改查
3、文檔的增刪改查

使用步驟

數(shù)據(jù)庫

關于database的基礎命令

  • 查看當前的數(shù)據(jù)庫:db
  • 查看所有的數(shù)據(jù)庫:show dbs /show databases
  • 切換數(shù)據(jù)庫:use 數(shù)據(jù)庫名
  • 刪除當前的數(shù)據(jù)庫:db.dropDatabase()

創(chuàng)建數(shù)據(jù)庫

MongoDB 創(chuàng)建數(shù)據(jù)庫的語法格式如下:

use DATABASE_NAME

如果數(shù)據(jù)庫不存在,則創(chuàng)建數(shù)據(jù)庫,否則切換到指定數(shù)據(jù)庫。

> use vvcat
switched to db vvcat

> db
vvcat

刪除數(shù)據(jù)庫

MongoDB 刪除數(shù)據(jù)庫的語法格式如下:

db.dropDatabase()

刪除當前數(shù)據(jù)庫,默認為 test,使用 db 命令查看當前數(shù)據(jù)庫名。

> db
demo

> show dbs
admin 0.000GB
config 0.000GB
demo 0.000GB
local 0.000GB
vvcat 0.000GB

切換到數(shù)據(jù)庫 demo :

> use demo
switched to db demo

執(zhí)行刪除命令:
注:db表示當前數(shù)據(jù)庫

> db.dropDatabase()
{ “ok” : 1 }

最后,通過 show dbs 命令查看數(shù)據(jù)庫是否刪除成功:

> show dbs
admin 0.000GB
config 0.000GB
local 0.000GB
vvcat 0.000GB

集合

關于集合的基礎命令

  • 不手動創(chuàng)建集合:
    向不存在的集合中第一次加入數(shù)據(jù)時,集合會被創(chuàng)建出來

  • 手動創(chuàng)建集合:

    • db.createCollection(name, options)
      • 參數(shù)說明:
        • name: 要創(chuàng)建的集合名稱
        • options: 可選參數(shù), 指定有關內存大小及索引的選項
      • options 可以是如下參數(shù):
        • capped:默認值為false表示不設置上限,值為true表示設置上限。
        • size:當capped值為true時,需要指定此參數(shù),表示上限大小,當問你當達到上限時,會將之前的數(shù)據(jù)覆蓋,單位為字節(jié)。
        • max :指定固定集合中包含文檔的最大數(shù)量。

    查看集合:show collections
    刪除集合:db.集合名稱.drop()

    創(chuàng)建集合

    在 vvcat 數(shù)據(jù)庫中創(chuàng)建 vvcat 集合

    db.createCollection(“vvcat”)
    { “ok” : 1 }

    如果要查看已有集合,可以使用 show collections 或 show tables 命令:

    > show collections
    vvcat

    > show tables
    vvcat

    創(chuàng)建固定集合 sut,整個集合空間大小 10B,文檔最大個數(shù)為 5個。

    > db.createCollection(“sut”, {capped: true, size:10, max : 5})
    { “ok” : 1 }

    > show collections
    vvcat
    sut

    在 MongoDB 中,不需要創(chuàng)建集合。當在插入一些文檔時,MongoDB 會自動創(chuàng)建集合。

    > db.info.insert({“name” : “vvcat”})
    WriteResult({ “nInserted” : 1 })
    > show collections
    info
    sut
    vvcat

    刪除集合

    刪除集合:db.集合名稱.drop()

    > db.info.drop()
    true
    > show collections
    vvcat
    sut

    從結果中可以看出 info 集合已被刪除。

    文檔

    關于文檔的基礎命令

    • 查看當前集合下所有文檔:db.info.find()
    • 插入文檔:db.COLLECTION_NAME.insert(document)
    • 刪除一條文檔:db.inventory.deleteOne({})
    • 刪除所有文檔:db.inventory.deleteMany({})

    查找文檔

    使用 find()查找文檔

    find()查找文檔的語法格式如下:

    db.集合名稱.find({條件文檔})

    > db.numbers.find()
    { “_id” : ObjectId(“6114b854117b7214c4a99951”), “num” : 1 }
    { “_id” : ObjectId(“6114b854117b7214c4a99952”), “num” : 2 }
    { “_id” : ObjectId(“6114b854117b7214c4a99953”), “num” : 3 }
    { “_id” : ObjectId(“6114b854117b7214c4a99954”), “num” : 4 }
    { “_id” : ObjectId(“6114b854117b7214c4a99955”), “num” : 5 }
    { “_id” : ObjectId(“6114b8df117b7214c4a9995b”), “num” : 1 }
    { “_id” : ObjectId(“6114b8df117b7214c4a9995c”), “num” : 2 }
    { “_id” : ObjectId(“6114b8df117b7214c4a9995d”), “num” : 3 }
    { “_id” : ObjectId(“6114b8df117b7214c4a9995e”), “num” : 4 }
    { “_id” : ObjectId(“6114b8df117b7214c4a9995f”), “num” : 5 }

    > db.numbers.find({num:3})
    { “_id” : ObjectId(“6114b854117b7214c4a99953”), “num” : 3 }
    { “_id” : ObjectId(“6114b8df117b7214c4a9995d”), “num” : 3 }

    使用 findOne()查找文檔

    findOne()查找文檔的語法格式如下:

    db.集合名稱.findOne({條件文檔})

    查詢結果,只返回第一個。

    > db.numbers.findOne()
    { “_id” : ObjectId(“6114b854117b7214c4a99951”), “num” : 1 }

    > db.numbers.findOne({num:2})
    { “_id” : ObjectId(“6114b854117b7214c4a99952”), “num” : 2 }

    使用 pretty()將結果格式化

    pretty()查找文檔的語法格式如下:

    db.集合名稱.find({條件文檔}).pretty()

    > db.vvcat.find({name:“vvcat”}).pretty() )
    {
    “_id” : ObjectId(“6114bbf9117b7214c4a99965”),
    “name” : “vvcat”,
    “age” : 20,
    “gender” : “男”
    }
    {
    “_id” : ObjectId(“1114bbf9217b7214c4a99344”),
    “name” : “cat”,
    “age” : 10,
    “gender” : “男”
    }

    比較運算符
    • 等于 ( = ) :默認是等于判斷,沒有運算符
    • 小于 ( < ) :$It (less than)
    • 小于等于 ( <= ):$lte (less than equal)
    • 大于 ( > ) :$gt (greater than)
    • 大于等于 ( >= ):$gte
    • 不等于 ( != ):$ne

    查找num小于等于3的文檔:

    > db.numbers.find({num:{$lte:3}})
    { “_id” : ObjectId(“6114b854117b7214c4a99951”), “num” : 1 }
    { “_id” : ObjectId(“6114b854117b7214c4a99952”), “num” : 2 }
    { “_id” : ObjectId(“6114b854117b7214c4a99953”), “num” : 3 }
    { “_id” : ObjectId(“6114b8df117b7214c4a9995b”), “num” : 1 }
    { “_id” : ObjectId(“6114b8df117b7214c4a9995c”), “num” : 2 }
    { “_id” : ObjectId(“6114b8df117b7214c4a9995d”), “num” : 3 }

    查找num小于3的文檔:

    > db.numbers.find({num:{$lt:3}})
    { “_id” : ObjectId(“6114b854117b7214c4a99951”), “num” : 1 }
    { “_id” : ObjectId(“6114b854117b7214c4a99952”), “num” : 2 }
    { “_id” : ObjectId(“6114b8df117b7214c4a9995b”), “num” : 1 }
    { “_id” : ObjectId(“6114b8df117b7214c4a9995c”), “num” : 2 }

    查詢num為2,4的文檔

    > db.numbers.find({num:{$in:[2,4]}})
    { “_id” : ObjectId(“6114b854117b7214c4a99952”), “num” : 2 }
    { “_id” : ObjectId(“6114b854117b7214c4a99954”), “num” : 4 }
    { “_id” : ObjectId(“6114b8df117b7214c4a9995c”), “num” : 2 }
    { “_id” : ObjectId(“6114b8df117b7214c4a9995e”), “num” : 4 }

    查詢num不為2,4的文檔

    > db.numbers.find({num:{$nin:[2,4]}})
    { “_id” : ObjectId(“6114b854117b7214c4a99951”), “num” : 1 }
    { “_id” : ObjectId(“6114b854117b7214c4a99953”), “num” : 3 }
    { “_id” : ObjectId(“6114b854117b7214c4a99955”), “num” : 5 }
    { “_id” : ObjectId(“6114b8df117b7214c4a9995b”), “num” : 1 }
    { “_id” : ObjectId(“6114b8df117b7214c4a9995d”), “num” : 3 }
    { “_id” : ObjectId(“6114b8df117b7214c4a9995f”), “num” : 5 }

    范圍運算符

    使用 “in","in","in""nin” 判斷是否在某個范圍內

    > db.numbers.find({num:{$in:[2,4]}})
    { “_id” : ObjectId(“6114b854117b7214c4a99952”), “num” : 2 }
    { “_id” : ObjectId(“6114b854117b7214c4a99954”), “num” : 4 }
    { “_id” : ObjectId(“6114b8df117b7214c4a9995c”), “num” : 2 }
    { “_id” : ObjectId(“6114b8df117b7214c4a9995e”), “num” : 4 }

    邏輯運算符
    • and:在json中寫多個條件即可
    • or:使用$or,值為數(shù)組,數(shù)組中每個元素為json

    查找num大于等于3,且_id等于6114b854117b7214c4a99955的文檔。

    > db.numbers.find({num:{$gte:3},_id:ObjectId(“6114b854117b7214c4a99955”)})
    { “_id” : ObjectId(“6114b854117b7214c4a99955”), “num” : 5 }

    查找num大于3,或_id等于6114b854117b7214c4a99951的文檔。

    > db.numbers.find({$or:[{num:{$gt:3}},{_id:ObjectId(“6114b854117b7214c4a99951”)}]})
    { “_id” : ObjectId(“6114b854117b7214c4a99951”), “num” : 1 }
    { “_id” : ObjectId(“6114b854117b7214c4a99954”), “num” : 4 }
    { “_id” : ObjectId(“6114b854117b7214c4a99955”), “num” : 5 }
    { “_id” : ObjectId(“6114b8df117b7214c4a9995e”), “num” : 4 }
    { “_id” : ObjectId(“6114b8df117b7214c4a9995f”), “num” : 5 }

    查找num小于等于2,或_id是6114b8df117b7214c4a9995e,6114b8df117b7214c4a9995f的文檔

    db.numbers.find({$or:[{num:{$lte:2}},{"_id":{$in:[ObjectId(“6114b8df117b7214c4a9995e”),ObjectId(“6114b8df117b7214c4a9995f”)]}}]})
    { “_id” : ObjectId(“6114b854117b7214c4a99951”), “num” : 1 }
    { “_id” : ObjectId(“6114b854117b7214c4a99952”), “num” : 2 }
    { “_id” : ObjectId(“6114b8df117b7214c4a9995b”), “num” : 1 }
    { “_id” : ObjectId(“6114b8df117b7214c4a9995c”), “num” : 2 }
    { “_id” : ObjectId(“6114b8df117b7214c4a9995e”), “num” : 4 }
    { “_id” : ObjectId(“6114b8df117b7214c4a9995f”), “num” : 5 }

    查找num小于等于3,或_id等于6114b854117b7214c4a99951的文檔,并且num大于0的文檔。

    > db.numbers.find({KaTeX parse error: Expected '}', got 'EOF' at end of input: or:[{num:{lte:3}},{_id:ObjectId(“6114b854117b7214c4a99951”)}],num:{$gt:0}})
    { “_id” : ObjectId(“6114b854117b7214c4a99951”), “num” : 1 }
    { “_id” : ObjectId(“6114b854117b7214c4a99952”), “num” : 2 }
    { “_id” : ObjectId(“6114b854117b7214c4a99953”), “num” : 3 }
    { “_id” : ObjectId(“6114b8df117b7214c4a9995b”), “num” : 1 }
    { “_id” : ObjectId(“6114b8df117b7214c4a9995c”), “num” : 2 }
    { “_id” : ObjectId(“6114b8df117b7214c4a9995d”), “num” : 3 }

    正則表達式

    使用//或$regex編寫正則表達式

    在集合中添加一些文檔數(shù)據(jù)

    > db.collection.insertMany([{a:“assasadas”}, {a:“asqwewqrqw”},{a:“ghrferfersd”}, {a:“ddsssff”}])
    {
    “acknowledged” : true,
    “insertedIds” : [
    ObjectId(“6114d23f117b7214c4a999d4”),
    ObjectId(“6114d23f117b7214c4a999d5”),
    ObjectId(“6114d23f117b7214c4a999d6”),
    ObjectId(“6114d23f117b7214c4a999d7”)
    ]
    }

    查找以 as 開頭的文檔

    > db.collection.find({a:/^as/})
    { “_id” : ObjectId(“6114d23f117b7214c4a999d4”), “a” : “assasadas” }
    { “_id” : ObjectId(“6114d23f117b7214c4a999d5”), “a” : “asqwewqrqw” }

    查找以 f 結尾的文檔

    > db.collection.find({a:{$regex:‘f$’}})
    { “_id” : ObjectId(“6114d23f117b7214c4a999d7”), “a” : “ddsssff” }

    查找包含f字母的文檔

    > db.collection.find({a:{$regex:‘f’}})
    { “_id” : ObjectId(“6114d23f117b7214c4a999d6”), “a” : “ghrferfersd” }
    { “_id” : ObjectId(“6114d23f117b7214c4a999d7”), “a” : “ddsssff” }

    limit和skip
    • 方法limit():用于讀取指定數(shù)量的文檔
    • 方法skip():用于跳過指定數(shù)量的文檔

    以下為自定義待查詢的數(shù)據(jù):

    { “_id” : ObjectId(“6114b854117b7214c4a99951”), “num” : 1 }
    { “_id” : ObjectId(“6114b854117b7214c4a99952”), “num” : 2 }
    { “_id” : ObjectId(“6114b854117b7214c4a99953”), “num” : 3 }
    { “_id” : ObjectId(“6114b854117b7214c4a99954”), “num” : 4 }
    { “_id” : ObjectId(“6114b854117b7214c4a99955”), “num” : 5 }
    { “_id” : ObjectId(“6114b854117b7214c4a99956”), “num” : 6 }
    { “_id” : ObjectId(“6114b854117b7214c4a99957”), “num” : 7 }

    limit()查找文檔的語法格式如下:

    db.集合名稱.find().limit(NUMBER)

    查詢前3條數(shù)據(jù)

    > db.numbers.find().limit(3)
    { “_id” : ObjectId(“6114b854117b7214c4a99951”), “num” : 1 }
    { “_id” : ObjectId(“6114b854117b7214c4a99952”), “num” : 2 }
    { “_id” : ObjectId(“6114b854117b7214c4a99953”), “num” : 3 }

    skip()查找文檔的語法格式如下:

    db.集合名稱.find().skip(NUMBER)

    跳過前3條數(shù)據(jù),從第4條數(shù)據(jù)開始查詢

    > db.numbers.find().skip(3)
    { “_id” : ObjectId(“6114b854117b7214c4a99954”), “num” : 4 }
    { “_id” : ObjectId(“6114b854117b7214c4a99955”), “num” : 5 }
    { “_id” : ObjectId(“6114b854117b7214c4a99956”), “num” : 6 }
    { “_id” : ObjectId(“6114b854117b7214c4a99957”), “num” : 7 }

    同時使用

    db.集合名稱.find().limit(NUMBER).skip(NUMBER)

    db.集合名稱.find().skip(NUMBER).limit(NUMBER)

    先跳過3條數(shù)據(jù),然后顯示跳過以后的3條數(shù)據(jù)

    > db.numbers.find().skip(3).limit(3)
    { “_id” : ObjectId(“6114b854117b7214c4a99954”), “num” : 4 }
    { “_id” : ObjectId(“6114b854117b7214c4a99955”), “num” : 5 }
    { “_id” : ObjectId(“6114b854117b7214c4a99956”), “num” : 6 }

    db.numbers.find().limit(3).skip(3)
    { “_id” : ObjectId(“6114b854117b7214c4a99954”), “num” : 4 }
    { “_id” : ObjectId(“6114b854117b7214c4a99955”), “num” : 5 }
    { “_id” : ObjectId(“6114b854117b7214c4a99956”), “num” : 6 }

    自定義查詢

    以下為自定義待查詢的數(shù)據(jù):

    { “_id” : ObjectId(“6114b854117b7214c4a99951”), “num” : 1 }
    { “_id” : ObjectId(“6114b854117b7214c4a99952”), “num” : 2 }
    { “_id” : ObjectId(“6114b854117b7214c4a99953”), “num” : 3 }
    { “_id” : ObjectId(“6114b854117b7214c4a99954”), “num” : 4 }
    { “_id” : ObjectId(“6114b854117b7214c4a99955”), “num” : 5 }
    { “_id” : ObjectId(“6114b854117b7214c4a99956”), “num” : 6 }
    { “_id” : ObjectId(“6114b854117b7214c4a99957”), “num” : 7 }

    使用$where后面寫一個函數(shù),返回滿足條件的數(shù)據(jù)

    查詢num小于的5的文檔

    > db.numbers.find({}
    … $where:function(){
    … return this.num<5;
    … }})
    { “_id” : ObjectId(“6114b854117b7214c4a99951”), “num” : 1 }
    { “_id” : ObjectId(“6114b854117b7214c4a99952”), “num” : 2 }
    { “_id” : ObjectId(“6114b854117b7214c4a99953”), “num” : 3 }
    { “_id” : ObjectId(“6114b854117b7214c4a99954”), “num” : 4 }

    投影

    在查詢到的返回結果中,只選擇必要的字段
    投影的語法格式如下:

    db.集合名稱.find({},{字段名稱:1,...})

    參數(shù)為字段與值,值為1表示顯示,值為0不顯示
    特殊:對于_id列默認是顯示的,如果不顯示需要明確設置為0

    查找num大于3的文檔,不顯示_id,只顯示num

    > db.numbers.find({num:{$gte:3}},{_id:0})
    { “num” : 3 }
    { “num” : 4 }
    { “num” : 5 }
    { “num” : 6 }
    { “num” : 7 }

    查找全部的文檔,只顯示 _id 不顯示 num

    > db.numbers.find({},{_id:1,num:0})
    { “_id” : ObjectId(“6114b854117b7214c4a99951”) }
    { “_id” : ObjectId(“6114b854117b7214c4a99952”) }
    { “_id” : ObjectId(“6114b854117b7214c4a99953”) }
    { “_id” : ObjectId(“6114b854117b7214c4a99954”) }
    { “_id” : ObjectId(“6114b854117b7214c4a99955”) }
    { “_id” : ObjectId(“6114b854117b7214c4a99956”) }
    { “_id” : ObjectId(“6114b854117b7214c4a99957”) }

    排序

    方法sort(),用于對集進行排序
    sort()方法的語法格式如下:

    db.集合名稱.find().sort({字段:1,...})
    • 參數(shù)1為升序排列
    • 參數(shù)-1為降序排列

    降序排列

    > db.numbers.find().sort({num:-1})
    { “_id” : ObjectId(“6114b854117b7214c4a99957”), “num” : 7 }
    { “_id” : ObjectId(“6114b854117b7214c4a99956”), “num” : 6 }
    { “_id” : ObjectId(“6114b854117b7214c4a99955”), “num” : 5 }
    { “_id” : ObjectId(“6114b854117b7214c4a99954”), “num” : 4 }
    { “_id” : ObjectId(“6114b854117b7214c4a99953”), “num” : 3 }
    { “_id” : ObjectId(“6114b854117b7214c4a99952”), “num” : 2 }
    { “_id” : ObjectId(“6114b854117b7214c4a99951”), “num” : 1 }

    升序排列

    > db.numbers.find().sort({num:1})
    { “_id” : ObjectId(“6114b854117b7214c4a99951”), “num” : 1 }
    { “_id” : ObjectId(“6114b854117b7214c4a99952”), “num” : 2 }
    { “_id” : ObjectId(“6114b854117b7214c4a99953”), “num” : 3 }
    { “_id” : ObjectId(“6114b854117b7214c4a99954”), “num” : 4 }
    { “_id” : ObjectId(“6114b854117b7214c4a99955”), “num” : 5 }
    { “_id” : ObjectId(“6114b854117b7214c4a99956”), “num” : 6 }
    { “_id” : ObjectId(“6114b854117b7214c4a99957”), “num” : 7 }

    查找num小于等于3的文檔進行降序排序

    > db.numbers.find({num:{$lte:3}}).sort({num:-1})
    { “_id” : ObjectId(“6114b854117b7214c4a99953”), “num” : 3 }
    { “_id” : ObjectId(“6114b854117b7214c4a99952”), “num” : 2 }
    { “_id” : ObjectId(“6114b854117b7214c4a99951”), “num” : 1 }

    統(tǒng)計個數(shù)

    方法count()用于統(tǒng)計結果集中文檔條數(shù)
    count()方法的語法格式如下:

    db.集合名稱.find({條件}).count()

    統(tǒng)計num小于等于3的條數(shù)

    > db.numbers.find({num:{$lte:3}}).count()
    3

    db.集合名稱.count({條件})

    統(tǒng)計num小于等于5且,_id為 ObjectId(“6114b854117b7214c4a99951”) 的條數(shù)

    > db.numbers.count({num:{$lte:5}, _id:ObjectId(“6114b854117b7214c4a99951”)})
    1

    消除重復

    方法distinct()對數(shù)據(jù)進行去重

    db.集合名稱.distinct('去重字段',{條件})

    以下為自定義待查詢的數(shù)據(jù):

    { “_id” : ObjectId(“6114b854117b7214c4a99951”), “num” : 1 }
    { “_id” : ObjectId(“6114b854117b7214c4a99952”), “num” : 2 }
    { “_id” : ObjectId(“6114b854117b7214c4a99953”), “num” : 3 }
    { “_id” : ObjectId(“6114b854117b7214c4a99954”), “num” : 4 }
    { “_id” : ObjectId(“6114b854117b7214c4a99955”), “num” : 5 }
    { “_id” : ObjectId(“6114b854117b7214c4a99956”), “num” : 6 }
    { “_id” : ObjectId(“6114b854117b7214c4a99957”), “num” : 7 }
    { “_id” : ObjectId(“6114b854117b7214c4a999a1”), “num” : 1 }
    { “_id” : ObjectId(“6114b854117b7214c4a999a2”), “num” : 2 }
    { “_id” : ObjectId(“6114b854117b7214c4a999a3”), “num” : 3 }
    { “_id” : ObjectId(“6114b854117b7214c4a999b1”), “num” : 1 }
    { “_id” : ObjectId(“6114b854117b7214c4a999c1”), “num” : 1 }

    查看不重復的num

    > db.numbers.distinct(‘num’)
    [ 1, 2, 3, 4, 5, 6, 7 ]

    查看小于5不重復的num

    > db.numbers.distinct(‘num’,{num:{$lt:5}})
    [ 1, 2, 3, 4 ]

    添加文檔

    以下文檔可以存儲在 MongoDB 的 vvcat 數(shù)據(jù)庫 的 col 集合中:

    使用 insert()添加文檔

    > db.info.insert({“name”:“vvcat”, “age”:20})
    WriteResult({ “nInserted” : 1 })
    >db.info.insert({name:“張三”, age:18})
    WriteResult({ “nInserted” : 1 })

    查看已插入文檔:

    > db.info.find()
    { “_id” : ObjectId(“61138f22a0b643ed938cc2a6”), “name” : “vvcat”, “age” : 20 }
    { “_id” : ObjectId(“6113a18ba0b643ed938cc2a7”), “name” : “張三”, “age” : 18 }

    如果插入重復_id的文檔會報錯:

    > db.info.insert({_id:1,name:“李四”,age:10})
    WriteResult({ “nInserted” : 1 })
    > db.info.find()
    { “_id” : ObjectId(“61138f22a0b643ed938cc2a6”), “name” : “vvcat”, “age” : 20 }
    { “_id” : ObjectId(“6113a18ba0b643ed938cc2a7”), “name” : “張三”, “age” : 18 }
    { “_id” : 1, “name” : “李四”, “age” : 10 }
    db.info.insert({_id:1,name:“李四”,age:10})

    > db.info.insert({_id:1,name:“李四”,age:20})
    WriteResult({
    “nInserted” : 0,
    “writeError” : {
    “code” : 11000,
    “errmsg” : “E11000 duplicate key error collection: vvcat.info index: id dup key: { _id: 1.0 }”
    }
    })

    使用 save()添加文檔

    保存

    • db.集合名稱.save(document)
    • 如果文檔的_id已經(jīng)存在則修改,如果文檔的_id不存在則添加

    > db.info.save({_id:1,name:“李四”,age:20})
    WriteResult({ “nMatched” : 1, “nUpserted” : 0, “nModified” : 1 })
    > db.info.find()
    { “_id” : ObjectId(“61138f22a0b643ed938cc2a6”), “name” : “vvcat”, “age” : 20 }
    { “_id” : ObjectId(“6113a18ba0b643ed938cc2a7”), “name” : “張三”, “age” : 18 }
    { “_id” : 1, “name” : “李四”, “age” : 20 }

    注:如果不指定 _id 字段 save() 方法類似于 insert() 方法。如果指定 _id 字段,則會更新該 _id 的數(shù)據(jù)。

    使用 insertOne()添加文檔

    > db.collection.insertOne({“a”: 1})
    {
    “acknowledged” : true,
    “insertedId” : ObjectId(“6113c29666d7236471944c09”)
    }
    > db.collection.find()
    { “_id” : ObjectId(“6113c29666d7236471944c09”), “a” : 1 }

    使用 insertMany()插入多條文檔

    > db.collection.insertMany([{“b”: 2}, {‘c’: 3}])
    {
    “acknowledged” : true,
    “insertedIds” : [
    ObjectId(“6113c35866d7236471944c0c”),
    ObjectId(“6113c35866d7236471944c0d”)
    ]
    }
    > db.collection.find()
    { “_id” : ObjectId(“6113c29666d7236471944c09”), “a” : 1 }
    { “_id” : ObjectId(“6113c35866d7236471944c0c”), “b” : 2 }
    { “_id” : ObjectId(“6113c35866d7236471944c0d”), “c” : 3 }

    更新文檔

    db.集合名稱.update(<query>,<update>,{multi:<boolean>})

    • 參數(shù)query:查詢條件
    • 參數(shù)update:更新操作符
    • 參數(shù)multi:可選,默認是false,表示只更新找到的第一條記錄,值為true表示把滿足條件的文檔全部更新

    使用update替換一條文檔

    > db.info.find()
    { “_id” : ObjectId(“61138f22a0b643ed938cc2a6”), “name” : “vvcat”, “age” : 20 }
    { “_id” : ObjectId(“6113a18ba0b643ed938cc2a7”), “name” : “張三”, “age” : 18 }
    { “_id” : 1, “name” : “李四”, “age” : 20 }

    把{“name” : “李四”, “age” : 20}的數(shù)據(jù)替換為{name:‘王五’}

    > db.info.update({name:‘李四’},{name:‘王五’})
    WriteResult({ “nMatched” : 1, “nUpserted” : 0, “nModified” : 1 })
    db.info.find()
    { “_id” : ObjectId(“61138f22a0b643ed938cc2a6”), “name” : “vvcat”, “age” : 20 }
    { “_id” : ObjectId(“6113a18ba0b643ed938cc2a7”), “name” : “張三”, “age” : 18 }
    { “_id” : 1, “name” : “王五” }

    使用update更新一條文檔,把name為張三的數(shù)據(jù)替換成name為趙六

    > db.info.update({name:‘張三’},{$set:{name:‘趙六’}})
    WriteResult({ “nMatched” : 1, “nUpserted” : 0, “nModified” : 1 })
    > db.info.find()
    { “_id” : ObjectId(“61138f22a0b643ed938cc2a6”), “name” : “vvcat”, “age” : 20 }
    { “_id” : ObjectId(“6113a18ba0b643ed938cc2a7”), “name” : “趙六”, “age” : 18 }
    { “_id” : 1, “name” : “王五” }

    更新全部
    首先在添加多條文檔

    > db.info.find()
    { “_id” : ObjectId(“61138f22a0b643ed938cc2a6”), “name” : “vvcat”, “age” : 20 }
    { “_id” : ObjectId(“6113a18ba0b643ed938cc2a7”), “name” : “趙六”, “age” : 18 }
    { “_id” : 1, “name” : “王五” }
    { “_id” : ObjectId(“6113ab66a0b643ed938cc2a8”), “name” : “張三”, “age” : 33 }
    { “_id” : ObjectId(“6113ab67a0b643ed938cc2a9”), “name” : “張三”, “age” : 33 }
    { “_id” : ObjectId(“6113ab68a0b643ed938cc2aa”), “name” : “張三”, “age” : 33 }
    { “_id” : ObjectId(“6113ab68a0b643ed938cc2ab”), “name” : “張三”, “age” : 33 }
    { “_id” : ObjectId(“6113ab69a0b643ed938cc2ac”), “name” : “張三”, “age” : 33 }
    { “_id” : ObjectId(“6113ab69a0b643ed938cc2ad”), “name” : “張三”, “age” : 33 }
    { “_id” : ObjectId(“6113ab6aa0b643ed938cc2ae”), “name” : “張三”, “age” : 33 }

    使用{multi:true}參數(shù)達到更新多條的目的

    > db.info.update({name:‘張三’},{$set:{name:‘vvcat’}},{multi:true})
    WriteResult({ “nMatched” : 7, “nUpserted” : 0, “nModified” : 7 })
    > db.info.find()
    { “_id” : ObjectId(“61138f22a0b643ed938cc2a6”), “name” : “vvcat”, “age” : 20 }
    { “_id” : ObjectId(“6113a18ba0b643ed938cc2a7”), “name” : “趙六”, “age” : 18 }
    { “_id” : 1, “name” : “王五” }
    { “_id” : ObjectId(“6113ab66a0b643ed938cc2a8”), “name” : “vvcat”, “age” : 33 }
    { “_id” : ObjectId(“6113ab67a0b643ed938cc2a9”), “name” : “vvcat”, “age” : 33 }
    { “_id” : ObjectId(“6113ab68a0b643ed938cc2aa”), “name” : “vvcat”, “age” : 33 }
    { “_id” : ObjectId(“6113ab68a0b643ed938cc2ab”), “name” : “vvcat”, “age” : 33 }
    { “_id” : ObjectId(“6113ab69a0b643ed938cc2ac”), “name” : “vvcat”, “age” : 33 }
    { “_id” : ObjectId(“6113ab69a0b643ed938cc2ad”), “name” : “vvcat”, “age” : 33 }
    { “_id” : ObjectId(“6113ab6aa0b643ed938cc2ae”), “name” : “vvcat”, “age” : 33 }

    注意:“multi update only works with $ operators”

    刪除文檔

    db.集合名稱.removel(<query>,{justOne:<boolean>})

    • 參數(shù)query:可選,刪除的文檔的條件
    • 參數(shù)justOne:可選,如果設為true或1,則只刪除一條,默認false,表示刪除多條

    > db.info.find()
    { “_id” : ObjectId(“61138f22a0b643ed938cc2a6”), “name” : “vvcat”, “age” : 20 }
    { “_id” : ObjectId(“6113a18ba0b643ed938cc2a7”), “name” : “趙六”, “age” : 18 }
    { “_id” : 1, “name” : “王五” }
    { “_id” : ObjectId(“6113ab66a0b643ed938cc2a8”), “name” : “vvcat”, “age” : 33 }
    { “_id” : ObjectId(“6113ab67a0b643ed938cc2a9”), “name” : “vvcat”, “age” : 33 }
    { “_id” : ObjectId(“6113ab68a0b643ed938cc2aa”), “name” : “vvcat”, “age” : 33 }
    { “_id” : ObjectId(“6113ab68a0b643ed938cc2ab”), “name” : “vvcat”, “age” : 33 }
    { “_id” : ObjectId(“6113ab69a0b643ed938cc2ac”), “name” : “vvcat”, “age” : 33 }
    { “_id” : ObjectId(“6113ab69a0b643ed938cc2ad”), “name” : “vvcat”, “age” : 33 }
    { “_id” : ObjectId(“6113ab6aa0b643ed938cc2ae”), “name” : “vvcat”, “age” : 33 }

    設置{justOne:true}參數(shù),只刪除一條文檔

    > db.info.remove({name:‘vvcat’},{justOne:true})
    WriteResult({ “nRemoved” : 1 })
    > db.info.find()
    { “_id” : ObjectId(“6113a18ba0b643ed938cc2a7”), “name” : “趙六”, “age” : 18 }
    { “_id” : 1, “name” : “王五” }
    { “_id” : ObjectId(“6113ab66a0b643ed938cc2a8”), “name” : “vvcat”, “age” : 33 }
    { “_id” : ObjectId(“6113ab67a0b643ed938cc2a9”), “name” : “vvcat”, “age” : 33 }
    { “_id” : ObjectId(“6113ab68a0b643ed938cc2aa”), “name” : “vvcat”, “age” : 33 }
    { “_id” : ObjectId(“6113ab68a0b643ed938cc2ab”), “name” : “vvcat”, “age” : 33 }
    { “_id” : ObjectId(“6113ab69a0b643ed938cc2ac”), “name” : “vvcat”, “age” : 33 }
    { “_id” : ObjectId(“6113ab69a0b643ed938cc2ad”), “name” : “vvcat”, “age” : 33 }
    { “_id” : ObjectId(“6113ab6aa0b643ed938cc2ae”), “name” : “vvcat”, “age” : 33 }

    刪除所有滿足條件的數(shù)據(jù)文檔

    > db.info.remove({name:‘vvcat’})
    WriteResult({ “nRemoved” : 7 })
    > db.info.find()
    { “_id” : ObjectId(“6113a18ba0b643ed938cc2a7”), “name” : “趙六”, “age” : 18 }
    { “_id” : 1, “name” : “王五” }

    如果你想刪除集合中所有的數(shù)據(jù),可以使用以下方式:

    > db.info.remove({})
    WriteResult({ “nRemoved” : 2 })
    > db.collection.find()

    總結:

  • MongoDB 中默認的數(shù)據(jù)庫為 test,如果你沒有創(chuàng)建新的數(shù)據(jù)庫,集合將存放在 test 數(shù)據(jù)庫中。

  • 在 MongoDB 中,集合只有在內容插入后才會創(chuàng)建,創(chuàng)建集合(數(shù)據(jù)表)后要再插入一個文檔(記錄),集合才會真正創(chuàng)建。

  • 創(chuàng)建日期語句如下:參數(shù)的格式為 YYYY-MM-DD new Date(‘2021-08-11’)

    > new Date(‘2021-08-11’)
    ISODate(“2021-08-11T00:00:00Z”)

  • 每個文檔都有一個屬性,為_id,保證每個文檔的唯一性

  • 可以自己去設置_id插入文檔,如果沒有提供,那么 MongoDB 為每個文檔提供了一個獨特的_id,類型為objectID

  • objectID是一個12字節(jié)的十六進制數(shù):

    • 前4個字節(jié)為當前時間戳
    • 接下來3個字節(jié)的機器ID
    • 接下來的2個字節(jié)中 MongoDB 的服務進程id
    • 最后3個字節(jié)是簡單的增量值
  • 文檔支持的數(shù)據(jù)類型

    • Object ID:文檔ID
    • String:字符串,最常用,必須是有效的UTF-8
    • Boolean:存儲一個布爾值,true 或 false
    • Integer:整數(shù)可以是32位或64位,取決于操作系統(tǒng)
    • Double:存儲浮點值
    • Arrays:數(shù)組或列表,多個值存儲到一個鍵
    • Object:用于嵌入式的文檔,即一個值為一個文檔
    • Null:存儲Null值
    • Timestamp:時間戳,表示從1970-1-1到現(xiàn)在的總秒數(shù)
    • Data:存儲當前日期或時間的UNIX時間格式
  • 在插入文檔時,MongoDB 首先檢查固定集合的 size 字段,然后檢查 max 字段。

  • 插入文檔也可以使用 db.col.save(document) 命令。

    • db.collection.insert({}) 插入數(shù)據(jù),’_id’ 存在就報錯
    • db.collection.save({}) 插入數(shù)據(jù),’_id’ 存在會更新
  • MongoDB刪除文檔

    • 1.默認情況會刪除所有滿足條件的數(shù)據(jù)。
    • 2.{justOne:true}能達到只刪除一條的效果
  • 總結

    以上是生活随笔為你收集整理的MongoDB 增删改查的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內容還不錯,歡迎將生活随笔推薦給好友。