# Mongo DB --- ## Introduction - A NoSQL DataBase developed by 10gen - MongoDB is Document Database - storing data in documents - no predefined schema - every data can be different in content - simplify the process loading an record object into database Note: 本身沒有 Schema,所以在架構上很好調整 文件資料庫[b]與傳統的關聯式資料庫差異顯著。關聯式資料庫通常將資料儲存在相互獨立的表中,這些表由程式開發者定義,一個單一的物件可能散布在若干表中 對於一個給定物件,文件資料庫將其所有資訊儲存在資料庫內某個單一實體中,並且儲存的每一個物件可以不同於任一其它物件 簡化了將物件裝載入資料庫的過程 沒有在資料和模式(schema)之間的分離 --- ## Documents documents are in key-value format, like JSON ```json { "FirstName": "Bob", "Address": "5 Oak St.", "Hobby": "sailing" } ``` or can be transform from XML or others ```xml <contact> <firstname>Bob</firstname> <lastname>Smith</lastname> <address> <type>Home</type> <street1>123 Back St.</street1> </address> </contact> ``` Note: 一個document的結構非常簡單,基本結構就是一個key name,配一個key value。{ key1:value1 , key2:value2 , ……………………….. keyN:valueN } --- ## Terms and structure diff |MongoDB|RDBMS| |:----:|:----:| |collection|Table| |document|record(row)| |field|column| Note: Relational Database Management System 一般資料庫開Table必須定義欄位(大小、型別、名稱等),但是Collection完全不須要,也因為不須事先定義欄位,每筆document可以有不等數量的欄位,而存在同一個collection內 --- ### Start MongoDB ```bash >service mongod start >mongo ``` ### Create database ```bash > use demoDB ##create&switch > db.createCollection("contacts") ##like a table >show dbs admin 0.000GB config 0.000GB local 0.000GB demoDB 0.000GB > show collections contacts ``` Note: 11.特殊db a.admin:這是一個相當於”root”的db,凡加入的使用者將自動取得MongoDB的administrator權限。在 Security 部分會提到。 b.local:凡隸屬其中的 collections,不會被同步到其他叢集電腦上,只會存在單機裡。在 Replication 會提到。 c.config:使用在分片技術中 --- ### Drop DB/collection ```bash > db.contacts.drop() > db.dropDatabase() ``` ### Insert ```bash > db.contacts.insert([ {first_name:"A",last_name:"aa"},{first_name:"B",last_name:"bb"}] ) > db.contacts.find().pretty() { "_id" : ObjectId("5d771f9ee31f278fd05d80bf"), "first_name" : "A", "last_name" : "aa" } { "_id" : ObjectId("5d771f9ee31f278fd05d80c0"), "first_name" : "B", "last_name" : "bb" } ``` --- ### Update ```bash > db.contacts.update({first_name:"A"},{$set:{age:15}}) > db.contacts.update({first_name:"A"},{$inc:{age:5}}) > db.contacts.update({first_name:"A"},{$unset:{age:1}}) > db.contacts.update({first_name:"C"},{first_name:"C",last_name:"cc"},{upsert:true}) > db.contacts.update({first_name:"A"},{$rename:{"age":"howold"}}) > db.contacts.remove({first_name:"A"},{justOne:true}) ``` --- ### Find ```bash > db.contacts.find({first_name:"A"}) > db.contacts.find({$or:[{first_name:"dfdf"},{first_name:"fdf"}]}) > db.contacts.find({$and:[{first_name:"dfdf"},{first_name:"fdf"}]}) > db.contacts.find({age:{$gt:40}}) > db.contacts.find().sort({last_name:1}) #ascend > db.contacts.find().sort({last_name:-1}) #descend > db.contacts.find({first_name:{$regex: /A/}}) ```
{"metaMigratedAt":"2023-06-14T23:56:21.547Z","metaMigratedFrom":"YAML","title":"Mongo DB","breaks":true,"contributors":"[{\"id\":\"41e09dc8-8069-4fe7-b757-8c69ca0fa8c5\",\"add\":7067,\"del\":4146}]"}
    177 views