以前登錄Mysql的控制台后,使用SQL語言來操作數據庫,如
mysql> select * from tablename;
Mysql 5.7.12 之后有了比較大的變化,支持了JSON文檔的操作,同時也提供了全新的數據庫操作方式,現在可以不需要SQL的知識,以非常自然的代碼方式操作數據庫,例如
db.news.insert("create_date", "title")
.values("2016-04-10", "hello");
可以登錄 shell 控制台使用,也有新版本的驅動,可以在代碼中使用
shell 控制台有 Javascript版本,下面就體驗一下新的操作方式
登錄 shell控制台
mysqlsh -u root world_x
world_x 是數據庫名稱,是官方提供的一個測試庫

mysql-js>
這個提示說明當前的交互語言是 Javascript
因為Mysql支持了JSON文檔,所以操作的對象除了傳統的關系數據表外,增加了文檔集合
先看下傳統表操作有什么變化
查詢
mysql-js> db.City.select(["Name", "CountryCode"])
.where("Name like 'Z%'")
select 中的 ["Name", "CountryCode"] 表示只返回這兩列的信息,where 中是查詢條件
可以對查詢條件進行參數綁定
mysql-js> db.City.select(["Name", "CountryCode"])
.where("Name like :name")
.bind("name", "Z%")
排序和限定結果數量
mysql-js> db.Country.select(["Code", "Name"])
.orderBy(["Name desc"]).limit(3)
插入
mysql-js> db.City.insert("ID", "Name", "CountryCode")
.values(1, "Little Falls", "USA")
.values(2, "Happy Valley", "USA")
可以定義多個 value 來插入多條記錄
修改
mysql-js> db.City.update( )
.set("Name", "Beijing")
.where("Name = 'Peking'")
刪除
mysql-js> db.City.delete( )
.where("Name = 'Olympia'")
可以看到,使用了函數鏈的方式,很容易理解,對於不熟悉SQL的開發人員也很友好
操作集合
添加文檔

執行 CountryInfo 集合的 add 方法,參數是新文檔的 JSON 數據
查詢
使用 find 方法執行查詢操作,由於查詢結果太長,下面的示例就不顯示結果信息了
(1)列出所有文檔
mysql-js> db.CountryInfo.find( )
(2)條件查詢
mysql-js> db.CountryInfo.find("_id = '888'")
mysql-js> db.CountryInfo.find("GNP > 50 and demographics.Population < 100")
(3)參數綁定
mysql-js> db.CountryInfo.find("Name = :country")
.bind("country", "Italy")
(4)limit 與 sort
mysql-js> db.CountryInfo.find( )
.sort(["IndepYear desc"])
.limit(8).skip(1)
修改文檔

使用集合的 modify 與 set 的方法鏈來修改文檔,modify 參數指明目標文檔的查找條件,set 參數中給出修改方案
可以與 modify 配合的不只是 set,還有 unset、arrayAppend、arrayInsert、arrayDelete 等方法
刪除文檔
(1)刪除符合條件的文檔
mysql-js> db.CountryInfo.remove("_id = 'SEA'")
(2)先對結果集排序,然后刪除第一個
mysql-js> db.CountryInfo.remove( )
.sort(["Name desc"]).limit(1)
這個全新的操作方式降低了開發難度,例如一個開發者熟悉 MongoDB,但不熟悉SQL,那么現在也可以輕松的使用Mysql
