插入
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> } ] }
元素查詢操作符列表
- $exists 是否存在某個字段
{ field: { $exists: <boolean> } }
- $type 是否是某個變量類型
{ field: { $type: <BSON type number> | <String alias> } }
詳情參考https://docs.mongodb.com/manual/reference/operator/query/type/