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)
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的項
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> # 可選,拋出異常的級別。 } )
接下來咱們移除 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"]}})