Nosql_MongoDB數據庫配置以及基本指令


數據庫(database)

-數據庫的服務器

-服務器用來保存數據
-mongod用來啟動服務器
-數據庫的客戶端
-客戶端用來操作服務器,對數據進行增刪改查的操作
-mongo用來啟動客戶端
(不能關閉啟動的服務器,否則新開的客戶端無法連接)

擴展:將mongodb設置為系統服務,可以自動在后台啟動,不需要每次收到啟動(http://docs.mongodb.com/manual/tutorial/install-mongodb-on-windows/)

①-在C盤根目錄data文件夾中創建log文件夾
②-創建配置文件
在目錄 (你安裝MongoDB的路徑)下添加一個配置文件
mongod.cfg

(內容:

systemLog:
destination: file
path: c:\data\log\mongod.log
storage:
dbPath: c:\data\db

)

③-以管理員的身份打開命令行窗口
④-執行如下命令

sc.exe create MongoDB binPath= "\"C:\MongoDB\bin\mongod.exe\" --service --config=\"C:\MongoDB\mongod.cfg\"" DisplayName= "MongoDB" start= "auto"

備注:sc.exe create MongoDB binPath= "\"mongod的bin目錄\mongod.exe\" --service --config=\"mongo的安裝目錄\mongod.cfg\"" DisplayName= "MongoDB" start= "auto"
⑤-啟動mongodb服務

⑥-如果啟動失敗,證明上邊的操作有誤,
在控制台輸入 sc delete MongoDB 刪除之前配置的服務
然后從第一步再來一次

-- 基本概念

數據庫(database)
集合 (collection)
文檔(document)


-在MongoDB中,數據庫和集合都不需要手動創建
當我們創建文檔時,如果文檔所在的集合或者數據庫不存在會自動創建數據庫和集合

-- 基本指令

show dbs
show databases
- 顯示當前的所有數據庫
use 數據庫名
- 進入到指定的數據庫中
db
- db表示的是當前所處的位置
show collections
- 顯示數據庫中所有的集合

-- 數據庫的CRUD(增刪改查)的操作

- 向數據庫中插入文檔
db.<collection>.insert(doc)
- 向集合中插入一個文檔
- 例子: 向test數據庫中的,stus集合中插入一個新的學生對象

{name:"孫悟空",age:12,gender:"男"}
       db.stus.insert({name:"孫悟空",age:12,gender:"男"})


db.<collection>.find()

- 查詢當前集合中所有的文檔

 

①-插入數據

 向數據庫中插入文檔



db.<collection>.insert()
- 向集合中插入一個或多個文檔 
- 當我們向集合中插入文檔時,如果沒有給文檔指定_id屬性,則數據庫會自動為文檔添加_id,該屬性用來作為文檔的唯一標
- _id我們可以自己指定,如果我們指定了數據庫就不會再添加了,如果自己指定_id 也必須確保它的唯一性


db.<collection>.insertOne()
 - 插入一個文檔對象
 
        
db.<collection>.insertMany()
 - 插入多個文檔對象 

②-查詢

 查詢
 db.collention.find() 
  - find()用來查詢集合中所有符合條件的文檔 
  - find()可以接收一個對象作為條件參數 {}表示查詢集合中所有的文檔 {屬性:值} 查詢屬性是指定值的文檔 




db.collection.findOne()
  - 用來查詢集合中符合條件的第一個文檔 
  - findOne()返回的是一個文檔對象 


db.collection.find({}).count() 
  - 查詢所有結果的數量

③-修改

修改

db.collection.update(查詢條件,新對象) 
 - update()默認情況下使用新對象替換舊對象 
 - 如果需要修改指定的屬性,而不是替換需要使用"修改操作符"來完成修改 

 $set 可以用來修改文檔中的指定屬性 
 $unset 可以用來刪除文檔中的指定屬性 
 - update()默認修改一個 


db.collection.updateOne() 
 - 修改一個符合條件的文檔 
 
        
db.collection.updateMany() 
 - 同時修改多個符合條件的文檔 


db.collection.replaceOne() 
 - 替換一個文檔

④-刪除

刪除
db.collection.remove() 
 - 刪除符合條件的所有文檔(默認情況下會刪除多個) 如果remove()第二個參數傳遞一個true,則只會刪除一個 


- 如果只傳遞一個空對象作為參數,則會刪除集合中的所有文檔

db.collection.deleteOne() 

db.collection.deleteMany() 
 - remove()可以根據條件來刪除文檔,傳遞的條件的方式和find()一樣 

db.collection.drop(); 
 - 刪除集合 
 
db.dropDatabase() 
 - 刪除數據庫

文檔(document)

文檔是MongoDB中數據的基本單元,類似關系數據庫的行,多個鍵值對有序的放置在一起便是文檔
MongoDB中以文檔的方式存取記錄,如一條記錄格式如下:

{“username”:“sunsu”,“age”:12,email:'damowang@huohu.com','sex':女}
{“username”:“sunsu”,“age”:12}
{“Username”:“sunsu”,“age”:12}
{“Username”:“sunsu”}

注意:
(1)以上是幾個不同的文檔,MongoDB區分大小寫的數據類型,第一個age字段是數字類型,第二個age是字符串類型
(2)每一個文檔尺寸不能超過16M
(3)MongoDB的文檔不能有重復的鍵
(4)文檔的鍵是字符串。除了少數例外情況,鍵可以使用任意UTF-8字符

文檔之間的關系:
一對一(one to one)
  -    夫妻 (一個丈夫 對應 一個妻子)
  -   在MongoDB,可以通過內嵌文檔的形式來體現出一對一的關系

一對多(one to many)/多對一(many to one)

   -   父母 - 孩子
       用戶 - 訂單
       文章 - 評論
   - 也可以通過內嵌文檔來映射一對多的關系

多對多(many to many)
  -  分類 - 商品
     老師 - 學生

舉例:

//一對一
db.wifeAndHusband.insert([{ 
name:"黃蓉", 
husband:{ name:"郭靖" }
 }, { 
name:"潘金蓮", 
husband:{ name:"武大" } 
} ]);

db.wifeAndHusband.find();
//一對多 用戶(users)和訂單(orders)
db.users.insert([{
username:"孫悟空"},{
username:"豬八戒"}]);

db.order.insert({list:["蘋果","香蕉","大鴨梨"],
user_id:ObjectId("5d2bd20b782eae7ac9b5b5be")
});

db.users.find();
db.order.find();

//查找用戶孫悟空的訂單
var user_id = db.users.findOne({
username:"孫悟空"})._id;
db.order.find({
user_id:user_id});
//多對多
db.teachers.insert([{
name:"洪七公"},{
name:"黃葯師"},{
name:"龜仙人"}]);
db.stus.insert([{
name:"郭靖",
tech_ids:[
ObjectId("5d2bd518782eae7ac9b5b5c4"),
ObjectId("5d2bd518782eae7ac9b5b5c5")
]},{
name:"孫悟空",
tech_ids:[
ObjectId("5d2bd518782eae7ac9b5b5c4"),
ObjectId("5d2bd518782eae7ac9b5b5c5"),
ObjectId("5d2bd518782eae7ac9b5b5c6")
]}]);

db.teachers.find();
db.stus.find();
 
        

集合(collection)

集合就是一組文檔,多個文檔組成一個集合,集合類似於mysql里面的表,
無模式是指,在同一個集合中可以包含不同格式的文檔,如:
{“Name”:“Mongodb”,“Type”:“Nosql”}
{“UserName”:“Sunsu”,“age”:12,“Gender”:“male”}
以上兩個文檔可以放在同一個集合中
在mysql需要先建表再插入數據
模式自由:意思是集合里面沒有行和列的概念
注意:MongoDB中的集合不用創建、沒有結構,所有可以放不同格式的文檔

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM