MongoDB基礎操作

插入

db.student.insert({
    "name":"zhangsan",
    "age":18,
    "gender":"male",
    "favorites":[
        "football",
        "basketball"
    ]
})

結果
WriteResult({ "nInserted" : 1 })

更新

更新一條
db.collection.updateOne(<filter>, <update>, <options>)

更新多條
db.collection.updateMany(<filter>, <update>, <options>)

替換文檔的整個內容,除了_id字段
db.collection.replaceOne(<filter>, <replacement>, <options>)

更新/替換
db.collection.update(<filter>, <update/replacment>, <options>)

updateOne

{ "_id" : ObjectId("58b0008852a845f562d12fe1"), "item" : "paper", "qty" : 100, "size" : { "h" : 8.5, "w" : 11, "uom" : "in" }, "status" : "D" }

更新命令
db.inventory.updateOne(
   { item: "paper" },
   {
     $set: { "size.uom": "cm", status: "P" }
   }
)

更新結果
{ "_id" : ObjectId("58b0008852a845f562d12fe1"), "item" : "paper", "qty" : 100, "size" : { "h" : 8.5, "w" : 11, "uom" : "cm" }, "status" : "P" }

updateMany

{ "_id" : ObjectId("58b0008852a845f562d12fdd"), "item" : "journal", "qty" : 25, "size" : { "h" : 14, "w" : 21, "uom" : "cm" }, "status" : "A" }
{ "_id" : ObjectId("58b0008852a845f562d12fdf"), "item" : "mousepad", "qty" : 25, "size" : { "h" : 19, "w" : 22.85, "uom" : "cm" }, "status" : "P" }
{ "_id" : ObjectId("58b0008852a845f562d12fe3"), "item" : "postcard", "qty" : 45, "size" : { "h" : 10, "w" : 15.25, "uom" : "cm" }, "status" : "A" }

更新命令
db.inventory.updateMany(
   { "qty": { $lt: 50 } },
   {
     $set: { "size.uom": "in", status: "P" }
   }
)

更新結果
{ "_id" : ObjectId("58b0008852a845f562d12fdd"), "item" : "journal", "qty" : 25, "size" : { "h" : 14, "w" : 21, "uom" : "in" }, "status" : "P" }
{ "_id" : ObjectId("58b0008852a845f562d12fdf"), "item" : "mousepad", "qty" : 25, "size" : { "h" : 19, "w" : 22.85, "uom" : "in" }, "status" : "P" }
{ "_id" : ObjectId("58b0008852a845f562d12fe3"), "item" : "postcard", "qty" : 45, "size" : { "h" : 10, "w" : 15.25, "uom" : "in" }, "status" : "P" }

replaceOne

{ "_id" : ObjectId("58b0008852a845f562d12fe1"), "item" : "paper", "qty" : 100, "size" : { "h" : 8.5, "w" : 11, "uom" : "cm" }, "status" : "P" }

更新命令
db.inventory.replaceOne(
   { item: "paper" },
   { item: "paper", instock: [ { warehouse: "A", qty: 60 }, { warehouse: "B", qty: 40 } ] }
)

更新結果
{ "_id" : ObjectId("58b0008852a845f562d12fe1"), "item" : "paper", "instock" : [ { "warehouse" : "A", "qty" : 60 }, { "warehouse" : "B", "qty" : 40 } ] }

刪除

刪除所有
db.inventory.deleteMany({})

刪除所有
db.inventory.remove({})

根據條件刪除多條
db.inventory.deleteMany({ status : "A" })

根據條件刪除多條
db.inventory.remove( { status : "P" } )

刪除1條
db.inventory.deleteOne( { status: "D" } )

刪除1條
db.inventory.remove({ status: "D" }, 1)

查詢

簡單查詢

select * from student;

> db.student.find()

{ "_id" : ObjectId("58afd88952a845f562d12fdb"), "name" : "zhangsan", "age" : 18, "gender" : "male", "favorites" : [ "football", "basketball" ] }

友好顯示

> db.student.find().pretty()

{
    "_id" : ObjectId("58afd88952a845f562d12fdb"),
    "name" : "zhangsan",
    "age" : 18,
    "gender" : "male",
    "favorites" : [
        "football",
        "basketball"
    ]
}

選擇若干字段顯示,並按照列倒序排列。其中1表示升序排列,-1表示降序排列。

select vote_num,title from book_info order by vote_num desc limit 10;

> db.book_info.find({},{"vote_num":1,"title":1}).sort({"vote_num":-1}).limit(10)

{ "_id" : ObjectId("58afd690e138236112ede4aa"), "title" : "追風箏的人", "vote_num" : 247079 }
{ "_id" : ObjectId("58afd695e138236112ede4f7"), "title" : "小王子", "vote_num" : 210926 }
{ "_id" : ObjectId("58afd694e138236112ede4ec"), "title" : "圍城", "vote_num" : 179228 }
{ "_id" : ObjectId("58afd697e138236112ede515"), "title" : "白夜行", "vote_num" : 172310 }
{ "_id" : ObjectId("58afd690e138236112ede49e"), "title" : "解憂雜貨店", "vote_num" : 166469 }
{ "_id" : ObjectId("58afd6d4e138236112ede955"), "title" : "夢裏花落知多少", "vote_num" : 142771 }
{ "_id" : ObjectId("58afd695e138236112ede4f2"), "title" : "不能承受的生命之輕", "vote_num" : 129771 }
{ "_id" : ObjectId("58aff15de138236112efdd1c"), "title" : "三體", "vote_num" : 125780 }
{ "_id" : ObjectId("58afd69ce138236112ede56c"), "title" : "達·芬奇密碼", "vote_num" : 123163 }
{ "_id" : ObjectId("58afd69be138236112ede568"), "title" : "活着", "vote_num" : 119525 }

select title,vote_num from book_info where title=’三體’;

> db.book_info.find({"title":"三體"},{"vote_num":1,"title":1}).limit(10)

{ "_id" : ObjectId("58aff15de138236112efdd1c"), "title" : "三體", "vote_num" : 125780 }
{ "_id" : ObjectId("58aff4eee138236112f01980"), "title" : "三體", "vote_num" : 51 }

select title,vote_num from book_info where vote_num<100 limit 5;

> db.book_info.find({"vote_num":{$lt:100}},{"vote_num":1,"title":1}).limit(5)

{ "_id" : ObjectId("58afd68fe138236112ede49d"), "title" : "醞釀之道", "vote_num" : 32 }
{ "_id" : ObjectId("58afd690e138236112ede49f"), "title" : "小津安二郎美食三昧", "vote_num" : 18 }
{ "_id" : ObjectId("58afd690e138236112ede4a0"), "title" : "活着回來的男人", "vote_num" : 0 }
{ "_id" : ObjectId("58afd690e138236112ede4a1"), "title" : "果殼裏的一百五十九個宇宙", "vote_num" : 14 }
{ "_id" : ObjectId("58afd690e138236112ede4a5"), "title" : "七海遊俠:鹽海傳奇", "vote_num" : 0 }

select title,vote_num from book_info where title like ‘%三體%’;

> db.book_info.find({"title":/三體/},{"vote_num":1,"title":1}).limit(10)

{ "_id" : ObjectId("58afd7cae138236112edfb0e"), "title" : "<三體>導讀", "vote_num" : 47 }
{ "_id" : ObjectId("58afec5de138236112ef8419"), "title" : "魏三體石經古文輯證", "vote_num" : 0 }
{ "_id" : ObjectId("58aff15de138236112efdd1c"), "title" : "三體", "vote_num" : 125780 }
{ "_id" : ObjectId("58aff4c1e138236112f016dc"), "title" : "《三體》中的物理學", "vote_num" : 341 }
{ "_id" : ObjectId("58aff4eee138236112f01980"), "title" : "三體", "vote_num" : 51 }
{ "_id" : ObjectId("58aff4eee138236112f01981"), "title" : "三體2", "vote_num" : 662 }
{ "_id" : ObjectId("58aff4eee138236112f01982"), "title" : "三體3", "vote_num" : 455 }

模糊查詢操作其實是用正則表達式完成的

> db.book_info.find({"title":/三體\d+/},{"vote_num":1,"title":1}).limit(10)

{ "_id" : ObjectId("58aff4eee138236112f01981"), "title" : "三體2", "vote_num" : 662 }
{ "_id" : ObjectId("58aff4eee138236112f01982"), "title" : "三體3", "vote_num" : 455 }

select * from book_info limit 0,5;

select * from book_info limit 5,5;

> db.book_info.find({},{"vote_num":1,"title":1}).limit(5)
{ "_id" : ObjectId("58afd68fe138236112ede49b"), "title" : "一個陌生女人的來信", "vote_num" : 38478 }
{ "_id" : ObjectId("58afd68fe138236112ede49c"), "title" : "獵豹", "vote_num" : 598 }
{ "_id" : ObjectId("58afd68fe138236112ede49d"), "title" : "醞釀之道", "vote_num" : 32 }
{ "_id" : ObjectId("58afd690e138236112ede49e"), "title" : "解憂雜貨店", "vote_num" : 166469 }
{ "_id" : ObjectId("58afd690e138236112ede49f"), "title" : "小津安二郎美食三昧", "vote_num" : 18 }

> db.book_info.find({},{"vote_num":1,"title":1}).limit(5).skip(5)
{ "_id" : ObjectId("58afd690e138236112ede4a0"), "title" : "活着回來的男人", "vote_num" : 0 }
{ "_id" : ObjectId("58afd690e138236112ede4a1"), "title" : "果殼裏的一百五十九個宇宙", "vote_num" : 14 }
{ "_id" : ObjectId("58afd690e138236112ede4a2"), "title" : "直到那一天", "vote_num" : 319 }
{ "_id" : ObjectId("58afd690e138236112ede4a3"), "title" : "夜色人生", "vote_num" : 837 }
{ "_id" : ObjectId("58afd690e138236112ede4a4"), "title" : "寂然的狂喜", "vote_num" : 119 }

刪除collection

db.collection_name.drop()

備份與恢復

備份數據庫

mongodump –db=db_name

備份collection

mongodump –db=db_name –collection=collection_name

恢復數據庫

mongorestore dump/

附錄

比較查詢操作符列表

  • $eq 等於 { <field>: { $eq: <value> } }
  • $ne 不等於 {field: {$ne: value} }
  • $gt 大於 {field: {$gt: value} }
  • $gte 大於等於 {field: {$gte: value} }
  • $lt 小於 {field: {$lt: value} }
  • $lte 小於等於 { field: { $lte: value} }
  • $in 在集合內 { field: { $in: [<value1>, <value2>, ... <valueN> ] } }
  • $nin 不在集合內 { field: { $nin: [ <value1>, <value2> ... <valueN> ]} }

邏輯查詢操作符列表

  • $or 或 { $or: [ { <expression1> }, { <expression2> }, ... , { <expressionN> } ] }
  • $and 且 { $and: [ { <expression1> }, { <expression2> } , ... , { <expressionN> } ] }
  • $not 非 { field: { $not: { <operator-expression> } } }
  • $nor 異或 { $nor: [ { <expression1> }, { <expression2> }, ... { <expressionN> } ] }

元素查詢操作符列表

參考

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章