200行代碼快速入門文檔型數據庫MonogoDB

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();

在這裏插入圖片描述

結語

在這裏插入圖片描述

水平有限,僅供參考,若有紕漏,希望隨時指出!

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