mongodb常用語法及命令

mongodb常用語法及命令
1.創建用戶:db.createUser({user:"xu",pwd:"123456",roles:[{role:"root",db:"admin"}]});
2.登錄用戶:db.auth('xu','123456')
3.創建數據庫:
4.切換數據庫:use databases;
1 術語和概念
SQL MongoDB
table   collection
row document或BSON document
column  field
index   index
table joins $lookup, 綁定文檔
選定任一列作爲主鍵   自定指定`_id`爲主鍵
aggregation (e.g. group by) aggregation pipeline
2 創建與改變
SQL語句===========================MongoDB語句
CREATE TABLE people ( id MEDIUMINT NOT NULL AUTO_INCREMENT, user_id Varchar(30), age Number, status char(1), PRIMARY KEY (id) )==============   db.people.insertOne( { user_id: "abc123", age: 55, status: "A" } )
ALTER TABLE people ADD join_date DATETIME============== db.people.updateMany( { }, { $set: { join_date: new Date() } } )
ALTER TABLE people DROP COLUMN join_date ============== db.people.updateMany( { }, { $unset: { "join_date": "" } } )
CREATE INDEX idx_user_id_asc ON people(user_id)==============   db.people.createIndex( { user_id: 1 } )
CREATE INDEX idx_user_id_asc_age_desc ON people(user_id, age DESC)==============    db.people.createIndex( { user_id: 1, age: -1 } )
CREATE INDEX idx_user_id_asc_age_desc ON people(user_id, age DESC)==============    db.people.createIndex( { user_id: 1, age: -1 } )
DROP TABLE people============== db.people.drop()
3 插入
SQL INSERT==============    MongoDB insertOne()
INSERT INTO people(user_id, age, status) VALUES ("bcd001", 45, "A")
==============db.people.insertOne( { user_id: "bcd001", age: 45, status: "A" } )
4 選擇查詢
SQL SELECT  MongoDB find()
SELECT * FROM people==============  db.people.find()
SELECT id, user_id, status FROM people==============    db.people.find( { }, { user_id: 1, status: 1 } )
SELECT user_id, status FROM people==============    db.people.find( { }, { user_id: 1, status: 1, _id: 0 } )
SELECT * FROM people WHERE status = "A"==============   db.people.find( { status: "A" } )
SELECT user_id, status FROM people WHERE status = "A"============== db.people.find( { status: "A" }, { user_id: 1, status: 1, _id: 0 } )
SELECT * FROM people WHERE status != "A"==============  db.people.find( { status: { $ne: "A" } } )
SELECT * FROM people WHERE status = "A" AND age = 50==============  db.people.find( { status: "A", age: 50 } )
SELECT * FROM people WHERE status = "A" OR age = 50==============   db.people.find( { $or: [ { status: "A" } , { age: 50 } ] } )
SELECT * FROM people WHERE age > 25==============   db.people.find( { age: { $gt: 25 } } )
SELECT * FROM people WHERE age < 25==============   db.people.find( { age: { $lt: 25 } } )
SELECT * FROM people WHERE age > 25 AND age <= 50============== db.people.find( { age: { $gt: 25, $lte: 50 } } )
SELECT * FROM people WHERE user_id like "%bc%"==============    db.people.find( { user_id: /bc/ } ) -or- db.people.find( { user_id: { $regex: /bc/ } } )
SELECT * FROM people WHERE user_id like "bc%"============== db.people.find( { user_id: /^bc/ } ) -or- db.people.find( { user_id: { $regex: /^bc/ } } )
SELECT * FROM people WHERE status = "A" ORDER BY user_id ASC==============  db.people.find( { status: "A" } ).sort( { user_id: 1 } )
SELECT * FROM people WHERE status = "A" ORDER BY user_id DESC============== db.people.find( { status: "A" } ).sort( { user_id: -1 } )
SELECT * FROM people WHERE status = "A" ORDER BY user_id DESC============== db.people.find( { status: "A" } ).sort( { user_id: -1 } )
SELECT COUNT(*) FROM people==============   db.people.count() or db.people.find().count()
SELECT COUNT(user_id) FROM people============== db.people.count( { user_id: { $exists: true } } ) or db.people.find( { user_id: { $exists: true } } ).count()
SELECT COUNT(*) FROM people WHERE age > 30  ==============db.people.count( { age: { $gt: 30 } } ) or db.people.find( { age: { $gt: 30 } } ).count()
SELECT DISTINCT(status) FROM people==============   db.people.distinct( "status" )
SELECT * FROM people LIMIT 1==============  db.people.findOne() or db.people.find().limit(1)
SELECT * FROM people LIMIT 5 SKIP 10==============  db.people.find().limit(5).skip(10)
EXPLAIN SELECT * FROM people WHERE status = "A"==============   db.people.find( { status: "A" } ).explain()
5 修改數據
SQL Update==============    MongoDB updateMany()
UPDATE people SET status = "C" WHERE age > 25============== db.people.updateMany( { age: { $gt: 25 } }, { $set: { status: "C" } } )
UPDATE people SET age = age + 3 WHERE status = "A"  db.people.updateMany( { status: "A" } , { $inc: { age: 3 } } )
6 刪除數據
SQL Delete==============    MongoDB deleteMany()
DELETE FROM people WHERE status = "D"============== db.people.deleteMany( { status: "D" } )
DELETE FROM people==============    db.people.deleteMany({})
1.分片
在Mongodb裏面存在另一種集羣,就是分片技術,可以滿足MongoDB數據量大量增長的需求。
當MongoDB存儲海量的數據時,一臺機器可能不足以存儲數據,也可能不足以提供可接受的讀寫吞吐量。這時,我們就可以通過在多臺機器上分割數據,使得數據庫系統能存儲和處理更多的數據。
2.爲什麼使用分片
複製所有的寫入操作到主節點
延遲的敏感數據會在主節點查詢
單個副本集限制在12個節點
當請求量巨大時會出現內存不足。
本地磁盤不足
垂直擴展價格昂貴
mongodb中的表關聯
A表:
db.product.insert({"_id":1,"productname":"商品1","price":15})
db.product.insert({"_id":2,"productname":"商品2","price":36})
B表:
db.orders.insert({"_id":1,"pid":1,"ordername":"訂單1"})
db.orders.insert({"_id":2,"pid":2,"ordername":"訂單2"})
db.orders.insert({"_id":3,"pid":2,"ordername":"訂單3"})
db.orders.insert({"_id":4,"pid":1,"ordername":"訂單4"})
查詢
db.product.find()
db.orders.find()
$lookup表關聯用法:
------------------------------------
db.product.aggregate([
    {
      $lookup:
        {
          from: "orders",
          localField: "_id",
          foreignField: "pid",
          as: "inventory_docs"
        }
   }
])
------------------------------------
$lookup中的參數:
from:需要關聯的表【orders】
localField: 【product】表需要關聯的鍵。
foreignField:【orders】的matching key。
as:對應的外鍵集合的數據,【因爲可能是一對多的】
$match篩選:
----------------------------------------
db.product.aggregate([
    {
      $lookup:
        {
          from: "orders",
          localField: "_id",
          foreignField: "pid",
          as: "inventory_docs"
        }
   },
   { $match : { price : {$gt:20} } }
])
-----------------------------------------
$project 挑選字段:
-----------------------------------------
db.product.aggregate([
    {
      $lookup:
        {
          from: "orders",
          localField: "_id",
          foreignField: "pid",
          as: "inventory_docs"
        }
   },
   { $match : { price : {$gt:20} } },
   {$project: { "inventory_docs": 1,"_id":0 } }

])
-----------------------------------------
mongodb.jdbc配置:

mongo.host=192.168.xxx.xxx
mongo.port=27017
mongo.defaultDbName=mylearndb
#mongo.user=joyven
#mongo.pwd=123456
mongo.connectionsPerHost=10
mongo.threadsAllowedToBlockForConnectionMultiplier=5
mongo.minConnectionsPerHost=5
#\u8FDE\u63A5\u8D85\u65F6\u65F6\u95F4
mongo.connectTimeout=10000
#\u7B49\u5F85\u65F6\u95F4
mongo.maxWaitTime=120000
#Socket\u8D85\u65F6\u65F6\u95F4
mongo.socketTimeout=0
mongo.socketKeepAlive=true
mongo.description=joyven test mongodb database
mongo.maxConnectionIdleTime=1500
mongo.maxConnectionLifeTime=0
#mongo slave
mongo.heartbeatSocketTimeout=1000
mongo.heartbeatConnectTimeout=1500
mongo.minHeartbeatFrequency=5
mongo.heartbeatFrequency=10    
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章