mongoDB

sql和mongodb的術語對比

SQL術語/概念 MongoDB術語/概念 解釋/說明
database database 數據庫
table collection 數據庫表/集合
row document 數據記錄行/文檔
column field 數據字段/域
index index 索引
table joins   錶鏈接,MongoDB不支持
primary key primary key 主鍵,MongoDB自動將_id字段設置爲主鍵

庫操做

1.客戶端sql

# 使用自帶的客戶端,找到安裝目錄,執行bin目錄下的mongo.exe
mongo.exe

# 使用admin用戶和密碼 123456 鏈接到本地的 MongoDB 服務上(若是要鏈接到指定的數據庫上,須要在localhost後面繼續追數據庫的名字,如:localhost/test):
mongodb://admin:123456@localhost/

2.查看全部的數據庫mongodb

show dbs

3.建立數據庫數據庫

use XXX
# XXX是數據庫名字
# 說明:新建立的數據庫若是裏面沒有數據,使用show dbs查看時會看不到,須要插入數據後才能看到。

4.刪除數據庫ide

# 首先要轉到該數據庫下
use XXX
# 而後刪除該數據庫
db.dropDatabase

集合操做-表操做

複製代碼
> use cmdb_t
> db.createCollection("search_pro")     # 先建立集合,相似數據庫中的表
> show tables
search_pro
> db.cmdb_t.drop()                      # 刪除全部集合
true 
> show tables
複製代碼

文檔操做-數據操做

插入數據

複製代碼
# 插入數據
>db.表名.insert({'pkg_name':'searchops',
    tags: ['mongodb', 'database', 'NoSQL'],
    likes: 100
})

# 建立變量並插入變量
> document= {'pkg_name':'searchops2' , tags: ['mongodb', 'database', 'NoSQL'], likes: 200 }
> db.search_project.insert(document)
複製代碼

更新數據

update

db.collection.update(
<query>, #update的查詢條件
<update>, #update的對象和要更新的操做(如$,$inc...)等
{
upsert: <boolean>, # 可選,如不存在update記錄,是否插入objNew,true爲插入,默認false不插入。
multi: <boolean>, # 可選,默認false,只更新找到的第一條,參數爲true則按條件查出的多條記錄所有更新。
writeConcern: <document> # 可選,拋出異常的級別
}
)ui

update語法規則spa


複製代碼
db.collection.update(
   <query>,             #update的查詢條件
   <update>,            #update的對象和要更新的操做(如$,$inc...)等
   {
     upsert: <boolean>, # 可選,如不存在update記錄,是否插入objNew,true爲插入,默認false不插入。
     multi: <boolean>,  # 可選,默認false,只更新找到的第一條,參數爲true則按條件查出的多條記錄所有更新。
     writeConcern: <document> # 可選,拋出異常的級別
   }
)
複製代碼
# 找到pkg_name 爲searchops2的項,將title設置爲search_v3
db.search_project.update({'pkg_name':'searchops2'},{$set:{'title':'search_v3'}})   # 只改一條數據
db.search_project.update({'pkg_name':'searchops2'},{$set:{'title':'search_v3'}},{multi:true})  # 改全部pkg_name爲searchops2的項

save

db.collection.save(
   <document>,                 # 文檔數據
   {
     writeConcern: <document>  # 可選,拋出異常的級別。
   }
)

db.collection.save(
   <document>,                 # 文檔數據
   {
     writeConcern: <document>  # 可選,拋出異常的級別。
   }
)
# 會將相同id的數據中的內容替換成save中的內容
db.search_project.save({ "_id" : ObjectId("5e1ebab7ec1107d60b203516"), "pkg_name" : "search_v3", "tags" : [ "mongodb", "database", "NoSQL" ], "likes" : 200 })

刪除數據

db.collection.remove(
   <query>,              # 可選,刪除的文檔的條件。
   {
     justOne: <boolean>, # 可選,值爲true或1只刪除一個文檔,默認值 false刪除全部匹配條件的文檔。
     writeConcern: <document> # 可選,拋出異常的級別。  
} )
db.collection.remove(
   <query>,              # 可選,刪除的文檔的條件。
   {
     justOne: <boolean>, # 可選,值爲true或1只刪除一個文檔,默認值 false刪除全部匹配條件的文檔。
     writeConcern: <document> # 可選,拋出異常的級別。  
} )
db.collection.remove(
   <query>,              # 可選,刪除的文檔的條件。
   {
     justOne: <boolean>, # 可選,值爲true或1只刪除一個文檔,默認值 false刪除全部匹配條件的文檔。
     writeConcern: <document> # 可選,拋出異常的級別。  
} )

db.collection.remove(
   <query>,              # 可選,刪除的文檔的條件。
   {
     justOne: <boolean>, # 可選,值爲true或1只刪除一個文檔,默認值 false刪除全部匹配條件的文檔。
     writeConcern: <document> # 可選,拋出異常的級別。  
} )
複製代碼
接下來咱們移除 title 爲 'MongoDB 教程' 的文檔:

# 刪除全部符合條件的數據
>db.search_project.remove({'likes':100}) 
# 只刪除第一條找到的記錄
>db.search_project.remove({'likes':100},1)  
若是你只想刪除第一條找到的記錄能夠設置 justOne 爲 1,以下所示:
# 刪除全部數據,能夠使用如下方式(相似常規 SQL 的 truncate 命令):
>db.col.remove({})
複製代碼

查找數據

單文檔查詢

>db.collection.find(query, projection)
query :可選,使用查詢操做符指定查詢條件
projection :可選,使用投影操做符指定返回的鍵。查詢時返回文檔中全部鍵值, 只需省略該參數便可(默認省略)。

>db.col.find().pretty()
pretty() 方法以格式化的方式來顯示全部文檔。

>db.collection.find(query, projection)
query :可選,使用查詢操做符指定查詢條件
projection :可選,使用投影操做符指定返回的鍵。查詢時返回文檔中全部鍵值, 只需省略該參數便可(默認省略)。

>db.col.find().pretty()
pretty() 方法以格式化的方式來顯示全部文檔。
操做 格式 範例 RDBMS中的相似語句
等於 {<key>:<value>} db.col.find({"likes":"100"}).pretty() where likes = '100'
小於 {<key>:{$lt:<value>}} db.col.find({"likes":{$lt:50}}).pretty() where likes < 50
小於或等於 {<key>:{$lte:<value>}} db.col.find({"likes":{$lte:50}}).pretty() where likes <= 50
大於 {<key>:{$gt:<value>}} db.col.find({"likes":{$gt:50}}).pretty() where likes > 50
大於或等於 {<key>:{$gte:<value>}} db.col.find({"likes":{$gte:50}}).pretty() where likes >= 50
不等於 {<key>:{$ne:<value>}} db.col.find({"likes":{$ne:50}}).pretty() where likes != 50
複製代碼
# 查找全部數據
db.search_project.find();
# and
db.col.find({"likes":100, "pkg_name":"search"}).pretty()
#or
db.col.find({$or: [{key1: value1}, {key2:value2}]}).pretty()
# and 和 or
>db.col.find({"likes": {$gt:50}, $or: [{"pkg_name": "search"},{"title": "search_v3"}]}).pretty()
複製代碼
# $type 指定查找類型,指定查找title 爲 String 的數據
db.search_project.find({"title" : {$type : 'string'}})

關係查詢

嵌入式關係

{
"_id":ObjectId("52ffc33cd85242f436000001"),
"contact": "987654321",
"dob": "01-01-1991",
"name": "Tom Benzamin",
"address": [
{
"building": "22 A, Indiana Apt",
"pincode": 123456,
"city": "Los Angeles",
"state": "California"
},
{
"building": "170 A, Acropolis Apt",
"pincode": 456789,
"city": "Chicago",
"state": "Illinois"
}]
} code

數據文檔對象


複製代碼
{
   "_id":ObjectId("52ffc33cd85242f436000001"),
   "contact": "987654321",
   "dob": "01-01-1991",
   "name": "Tom Benzamin",
   "address": [
      {
         "building": "22 A, Indiana Apt",
         "pincode": 123456,
         "city": "Los Angeles",
         "state": "California"
      },
      {
         "building": "170 A, Acropolis Apt",
         "pincode": 456789,
         "city": "Chicago",
         "state": "Illinois"
      }]
} 
複製代碼
>db.users.findOne({"name":"Tom Benzamin"},{"address":1})
引用式關係

{
"_id":ObjectId("52ffc4a5d85242602e000000"),
"building": "22 A, Indiana Apt",
"pincode": 123456,
"city": "Los Angeles",
"state": "California"
} blog

用戶地址文檔教程


複製代碼
{
   "_id":ObjectId("52ffc4a5d85242602e000000"),
   "building": "22 A, Indiana Apt",
   "pincode": 123456,
   "city": "Los Angeles",
   "state": "California"
} 
複製代碼

{
"_id":ObjectId("52ffc33cd85242f436000001"),
"contact": "987654321",
"dob": "01-01-1991",
"name": "Tom Benzamin",
"address_ids": [
ObjectId("52ffc4a5d85242602e000000")
]
}

用戶文檔


複製代碼
{
   "_id":ObjectId("52ffc33cd85242f436000001"),
   "contact": "987654321",
   "dob": "01-01-1991",
   "name": "Tom Benzamin",
   "address_ids": [
      ObjectId("52ffc4a5d85242602e000000")
   ]
}
複製代碼
>var result = db.users.findOne({"name":"Tom Benzamin"},{"address_ids":1})
>var addresses = db.address.find({"_id":{"$in":result["address_ids"]}})
相關文章
相關標籤/搜索