200行代碼快速入門文檔型數據庫MonogoDB
文章目錄
前言
環境:
1.MongoDB V3.24
2.NoSQL Manager for MongoDB(圖形化界面)
一、基本命令
1.顯示所有數據庫
//顯示所有數據庫
show databases;
show dbs;
2.創建並使用數據庫
//創建並使用數據庫
use lan;
3.顯示當前使用的數據庫的所有集合
//顯示當前使用的數據庫的所有集合
show collections;
4.顯示當前使用的數據庫名稱
//顯示當前使用的數據庫名稱
db
二、文檔CRUD
1.增
//增
db.collection.insert({鍵:值}) 增加一個文檔
db.collection.insert([{},{}...]) 增加多個文檔
db.collection.insertOne({鍵:值}) 只能增加一個文檔
db.collection.insertMany([{},{}...]) 只能增加多個文檔
示例:
db.test.insert({name:"jack",age:18});
db.test.insert([ {name:"lucy",age:16}, {name:"merry",age:17} ]);
db.test.insertOne({name:"tom",age:18});
db.test.insertMany([ {name:"jerry",age:17}, {name:"mike",age:19} ]);
2.查
//查
db.collection.find() 或 db.collection.find({}) 查詢所有
db.collection.find(<query>) 條件查詢
db.collection.find(<query>)[index] 查詢指定索引(默認按照_id順序升序排序)
db.collection.findOne(<query>) 查詢滿足條件的第一個文檔
示例:
db.test.find({});
db.test.find();
db.test.find({name:"lucy"});
db.test.find()[2];
db.test.findOne();
3.改
//改
db.collection.update({query},{update}) 修改符合查詢條件的文檔的值。注意:後面的替換屬性會完全覆蓋前面的屬性
db.collection.update( {query}, {$set: {鍵:值...} } ) 修改符合查詢條件的文檔(只能修改第一個)
db.collection.update( {query}, {$set: {鍵:值...}, {multi: true} } ) 修改符合查詢條件的的所有文檔(multi默認爲false,需手動修改)
db.collection.updateOne( {query}, {$set: {鍵:值...} } ) 修改符合查詢條件的文檔(等同於multi爲false的update)
db.collection.updateMany( {query}, {$set: {鍵:值...} } ) 修改符合條件的所有文檔(等同於multi爲true的update)
db.collection.update( {query}, {$unset: {鍵:值...} } ) 刪除符合查詢條件的屬性
db.collection.replaceOne(<query>,<replacement>) 等同於update(<query>,<update>)
db.collection.update( {query}, {$inc: {key:num} } ) 向文檔的數字型鍵追加值進行數字運算 正數代表增加值,負數代表減少值
db.collection.update( {query}, {$push: {key:value} } ) 向文檔的數組型鍵追加值。
示例:
db.test.update({name:"lucy"},{age:18});
db.test.update(
{"_id" : ObjectId("5eb3745e466ed91adbd93155")},
{$set: {name: "lucy"} }
);
db.test.update(
{age: 18},
{$set: {address: "beijing" } }
);
db.test.update(
{age: 18},
{$set: {address: "beijing"} },
{multi:true}
);
db.test.updateOne(
{age: 19},
{$set: {phone: 110} }
);
db.test.updateMany(
{age: 17},
{$set: {hobby: "game" } }
);
db.test.update(
{age: 17},
{$unset: {hobby: ""} }
);
db.test.updateMany(
{age: 17},
{$unset: {hobby: ""}}
);
db.test.update(
{name: "merry"},
{$inc: {age: -1} }
);
db.test.replaceOne({name: "lucy"},{name: "lucys"});
-------
db.arr.insert([
{type:"color1", color: ["red", "green", "blue"] }
]);
db.arr.update(
{type: "color1" },
{$push: {color: "yellow" } }
);
db.arr.find();
-------
db.test.find();
4.刪
//刪
db.collection.remove({}) 刪除所有
db.collection.remove(<query>,<justone>) 刪除符合條件的的文檔,Justone爲false表示刪除多個,爲true表示刪除一個,默認爲false
db.collection.remove
db.collection.deleteOne(<query>) 刪除一個符合條件的文檔
db.collection.deleteMany(<query>) 刪除所有符合條件的文檔
db.collection.drop() 刪除集合
db.dropDatabase() 刪除數據庫(謹慎使用)
示例:
db.test.remove({name:"jerry"});
db.test.remove({age: 18},true);
db.test.deleteOne({age: 17});
db.test.deleteMany({age: 18});
db.test.remove({});
db.test.drop();
show collections;
三、批量創建文檔
//向集合中插入10000條文檔
var arr = [];
for(var i = 1; i <= 10000; i++){
arr.push({num:i});
}
db.numbers.insert(arr);
db.numbers.find().count();
四、常用函數
1.limit和skip
//limit(num) 查詢num個文檔,默認起始位置爲索引第一個
//skip(num) 跳過前面num個文檔,和limit()的位置可以互換
db.numbers.find().limit(100);
db.numbers.find().skip(100).limit(100);
2.條件操作符
$gt 大於 $gte 大於等於 $lt 小於 $lte 小於等於
db.collection.find({key: {$gt:num} })
db.collection.find({key: {$gt:num}, {$lt:num} ... }) 與
db.collection.find({$or: [ {key: {$gte:num}}, {key: {$lte:num}} ] }) 或
db.emp.find();
db.emp.find({salary: {$gte:8000} });
db.emp.find({salary: {$lt: 8000} });
db.emp.find({$or: [ {salary: {$gte:8000}}, {salary: {$lte:9000}} ] });
3.排序函數
//sort()排序函數
sort({key:1/-1}) 第二個參數爲1表示生序排序,-1表示降序排序
sort({key1:1/-1},{key2:1/-1}) 多重條件排序
//按照薪資升序排序
db.emp.find().sort({salary:1});
//按照薪資升序排序,再按照年齡降序排序
db.emp.find().sort({salary:1},{age:-1});
//db.collection.find().skip().limit().sort(); 複雜查詢 其中skip limit sort之間的位置可以相互互換
db.emp.find().skip(1).limit(4).sort({salary:1},{age:-1});
五、多表關係
1.一對一
//一對一的關係:使用內嵌文檔的形式
use rs;
db.rs.insert([
{name:"郭靖",wife:{name:"黃蓉"}},
{name:"張無忌",wife:{name:"趙敏"}}
]);
db.rs.find();
2.多對一
//多對一的關係
db.users.insert([{user:"jack"},{user:"tom"}]);
db.users.find();
db.roles.insert({list:["admin","user","guest"],
user_id:ObjectId("5eb263e2c0935786ed43699d")});
var id = db.users.findOne({user:"jack"})._id;
id;
db.roles.find({user_id:id});
3.多對多
//多對多的關係(many to many)
db.customer.insert([
{name:"jack",gift:["car","house"]},
{name:"mike",gift:["car"]},
{name:"lucy",girt:["car","cake"]}
]);
db.orders.insert([
{gift:"car",who:["jack","mike","lucy"]},
{gift:"house",who:["jack","lucy"]},
{gift:"cake",who:"lucy"}
]);
db.customer.find();
db.orders.find();
結語
水平有限,僅供參考,若有紕漏,希望隨時指出!