MongoDB 入門之基礎DML

來源:互聯網
上載者:User

標籤:des   style   blog   http   color   io   ar   sp   資料   

前言:

此文章主要記錄主要的 MongoDB Collection 的 DML操作。

次文章中的 Collection 名字為 yourColl,每一次操作初始包含兩條資料

{    "_id": ObjectId("5438df36309dca34635d4460"),    "username": "name1",    "mail": "name1@abc.com"},{    "_id": ObjectId("5438df40309dca34635d4461"),    "username": "name2",    "mail": "[email protected]",    "age": 28}
一、C
  • db.collection.insert()
    db.yourColl.insert({    username: "mayj",    mail: "test@abc.com"})
  • db.collection.save()
    db.yourColl.save({    username: "mayj",    mail: "test@abc.com"})

    Note: save 操作時如果 documents 當中包含有 主鍵(_id),去判斷主鍵是否存在,如果存在,則更新原記錄,如果不存在,則插入新記錄。insert 與save 的區別在於如果一個 document 當中包含有主鍵(_id)且存在,則不處理處理,返回錯誤。

二、R
  • db.collection.find()
    • 查詢所有記錄
      db.yourColl.find();

      相當於 MySQL 的

      Select * from yourColl;
    • 查詢 distinct 某列重複的資料
      db.yourColl.distinct("username"); 

      相當於 MySQL 的

      Select distict name from yourColl; 
    • 查詢 age=28 的資料
      db.yourColl.find({    age: 28,})

      相當於 MySQL 的

      Select * from yourColl where age = 28;
    • 查詢 age >20 的資料
      db.yourColl.find({    age: {$gt:20}})

      相當於 MySQL 的

      Select * from yourColl where age > 20;
    • 查詢 age >=20 的資料
      db.yourColl.find({    age: {$gte:20}})

      相當於 MySQL 的

      Select * from yourColl where age >= 20;
    • 查詢 age >=20且 age < 30 的資料
      db.yourColl.find({    age: {$gte: 20, $lt: 30}})

      相當於 MySQL 的

      Select * from yourColl where age >= 20 and age < 30; 
    • 查詢 mail 中包含 abc 的資料
      db.yourColl.find({    mail: /abc/i})

      相當於 MySQL 的

      Select * from yourColl where mail like "%abc%";
    • 查詢 username 中以 name 開頭的資料
      db.yourColl.find({    mail: /^abc/i})

      相當於 MySQL 的

      Select * from yourColl where mail like "%^abc%";
    • 查詢 username =name1,mail [email protected] 的資料
      db.yourColl.find({    username: "name1",    mail: "name1@abc.com"})

      相當於 MySQL 的

      Select * from yourColl where username = "name1" and mail = "name1@abc.com";
    • 查詢指定列 username 和 mail 的資料
      db.youColl.find({    },{    username: true,    mail: 1})

      相當於 MySQL 的

      Select username, mail from yourColl;

      其中 true 可以用1代替。

    • 按照 username 升序,mail 降序排列
      db.yourColl.find({}).sort({username:1,mail:-1})

      相當於 MySQL 的

      Select * from yourColl order by username ASC, mail DESC;
    • 查詢1-2條資料
      db.yourColl.find({}).limit(2).skip(1)

      相當於 MySQL 的

      Select * from yourColl limit 1,1 
    • 查詢 username = name1 或者 username =name2 的資料

      db.yourColl.find({    $or:[{username: "name1"}, {username: "name2"}]})

      相當於 MySQL 的

      Select * from yourColl where username = "name1" or username = "name2";
    • 查詢合格記錄數
      db.collect1.find({}).count()

      相當於 MySQL 的

      Select count(*) from yourColl
  • db.collection.findOne()

  • db.collection.findAndModify()
三、U
  • db.collection.update()
    • 更新 username = name2 的使用者的 age 為30
      db.yourColl.update(    {        username: "name2"    },    {        $set: {            age: 30        }    },
        false,
        true)

      相當於 MySQL 的

      Update yourColl set age = 30 where username = "name2";
    • 更新 username = name2 的使用者的 age 為 age + 30
      db.yourColl.update(    {        username: "name2"    },    {        $set: {            age: 30        }    },
        false,
        true)

      相當於 MySQL 的

      Update yourColl set age = age + 30 where username = "name2";
    • 更新 username = name2 的使用者的 username = name3 age 為 age + 30
      db.yourColl.update(    {        username: "name2"    },    {        $set: {            age: 30        },        $inc: {            username: "name3"        }    },  false,  true)

      相當於 MySQL 的

      Update yourColl set age = age + 30, username = "name3" where username = "name2";
四、D
  • db.collection.remove()
    • 刪除 username = name3 的 記錄
      db.yourColl.remove({  username: "name3"})

      相當於 MySQL 的

      Delete from yourColl where username = "name3";
五、RUD
  • db.collection.findAndModify() & db.collection.runCommond()
  • db.users.findAndModify({     query: {age: {$gte: 25}},     sort: {age: -1},     update: {$set: {name: ‘a2‘}, $inc: {age: 2}},     remove: true }); 
    db.runCommand({     findandmodify : "users",     query: {age: {$gte: 25}},     sort: {age: -1},     update: {$set: {name: ‘a2‘}, $inc: {age: 2}},     remove: true }); 
    參數 詳解 預設值 query 查詢過濾條件 {} sort 如果多個文檔符合查詢過濾條件,將以該參數指定的相片順序選擇出排在首位的對象,該對象將被操作 {} remove 若為true,被選中對象將在返回前被刪除 N/A update 一個 修改器對象 N/A new 若為true,將返回修改後的對象而不是原始對象。在刪除操作中,該參數被忽略。 false 

外部資源連結:

MongoDB CRUD Introduction

MongoDB 入門之基礎DML

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.