Dark Mode

Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

cfadmin-cn/mongo

Repository files navigation

Lua MongoDB Driver

Ji Yu cfadminKuang Jia Shi Xian De MongoDB Driver.

Te Xing

  • Zui Xin Ban De Xie Yi (OP_MSG), Jiao Hu Geng Jia Gao Xiao ;

  • Feng Zhuang Chu Liao Tong Yi De CURD, Ju He , Tong Ji Deng Jie Kou Fang Fa ;

  • Dui GridFSDe Shang Chuan , Cha Xun , Shan Chu Deng Cao Zuo , Bing Qie Zhi Chi Fen Pian Chuan Shu ;

  • Yong You She Qu Zui Wan Shan De BSONJie Xi Qi , Shi Yong Geng Jia Jian Dan , Jie Xi Geng Jia Gao Xiao ;

  • Geng Jian Ji De Yu Fa Jiang Di Xue Xi Cheng Ben , Wu Xu Fu Za De Diao Yong Ji Ke Wan Cheng Gong Neng ;

  • Wan Shan De Shi Yong Shi Li , Ke Yi Zi Xing Ce Shi Shi Ji Shi Yong Qing Kuang ;

Lei Xing

  • Zi Fu Chuan (String)

  • Er Jin Zhi Lei Xing (Binary/MD5/uuid)

  • Zheng Ze Biao Da Shi (Regex)

  • Biao (table/array)

  • Kong (null)

  • Wei Ding Yi (undefined)

  • Shi Jian (datetime/timestamp)

  • Dui Xiang ID(objectid)

  • Zheng Xing (int32/int64)

  • Fu Dian Xing (Double)

  • Bu Er (true/false)

  • Da Xiao Zhi (MaxKey/MinKey)

  • Dai Ma (java script code)

Xiao Lu

Ben Ku Shi Yong Liao Chun LuaShi Xian Liao bsonDe Xu Lie Hua Yu Fan Xu Lie Hua , Dan Shi Jing Guo Yi Duan Shi Jian De Shi Yong Yu Ce Shi Fa Xian Ti Yan Bing Bu Le Guan ; Yin Wei Te Xing Yuan Yin Bi Xu Zeng Jia Fu Za De Fan Xu Lie Hua Liu Cheng ;

Er Wo Men Zhu Yao Zai Yu mongodbFu Wu Qi Jin Xing Jiao Hu De Shi Hou Hui Cai Hui Shi Yong bson, Bing Qie Jiao Hu Qing Qiu De Bian Ma Bu Hui You Tai Duo Nei Rong Suo Yi Zhu Yao Xing Neng Wen Ti Ding Wei Zai bsonDe Fan Xu Lie Hua Shang .

Zai Jing Guo Xiang Xi De Ce Shi Hou Fa Xian Chun LuaShi Xian De BSONFan Xu Lie Hua Xing Neng Shi Fen Zao Gao ,Suo Yi Zui Hou Jing Guo Shi Yong Shi Yong CYu Yan Zhong Xie De Fan Xu Lie Hua Fang Fa Lei Jie Jue Zhe Fang Mian Dai Lai De Yi Xie Fu Mian Ying Xiang .

Zhi De Yi Ti De Shi CYu Yan Ban De Shi Xian Xiao Lu Shi LuaDe 100Bei , Suo Yi Bu Yong Zai Dan Xin Xing Neng Wen Ti Liao ; Bing Qie Nei Bu Neng Zi Dong Jian Cha Yong Hu Shi Fou You Bian Yi Chu CBan Ben De bsonShi Xian , Yong Hu You Xu Yao Bian Yi Ji Ke .

An Zhuang

  • cloneXiang Mu Dao 3rdMu Lu Xia , Zhe Yang Jiu Wan Cheng Liao Ji Chu An Zhuang ;

  • (Ke Xuan ) Ru Guo Nin An Zhuang You GCCHuo Zhe clangBian Yi Qi ; Na Yao Ke Yi Jin Ru mongoDe Mu Lu Yun Xing make buildBian Yi lbson.so;

Shi Yong Jie Shao

local mongo = require "mongo"

local bson = require "mongo.bson"

1. Gou Zao Fang Fa

Chuang Jian


function mongo:new(opt) return mongo end

  • opt.host - stringLei Xing , Fu Wu Qi Yu Ming (Mo Ren Shi :"localhost");

  • opt.port - integerLei Xing , Fu Wu Qi Duan Kou (Mo Ren Shi :27017);

  • opt.SSL - booleanLei Xing , Shi Fou Xu Yao Shi Yong SSLXie Yi Wo Shou ;

  • opt.auth_mode - stringLei Xing , Shou Quan Yan Zheng Mo Shi (Jin Zhi Chi :SCRAM-SHA-1);

  • opt.db - stringLei Xing , Shou Quan Shu Ju Ku Ming Cheng (Mo Ren Shi :"admin");

  • opt.username - stringLei Xing , Shou Quan Yong Hu Zhang Hao ;

  • opt.password - stringLei Xing , Shou Quan Yong Hu Mi Ma ;

Diao Yong Ci Gou Zao Fang Fa Jiang Hui Chuang Jian MongoDBDui Xiang .

Lian Jie


function mongo:connect() return true | nil, string end

Kai Fa Zhe Zai Chuang Jian MongoDBDui Xiang De Shi Hou Ru Guo Tian Xie Liao usernameYu password, Diao Yong Ci Fang Fa De Shi Hou Hui Zi Dong Wan Cheng Shou Quan Ren Zheng .

Dan Ke Neng Cun Zai Shou Quan Cao Zuo Bu Wan Shan (Li Ru Bu Ke Du , Xie )De Qing Kuang , Zhe Jiu Ke Neng Chu Xian Jian Quan Cheng Gong Dan Hou Xu Zhi Xing CRUDShi Ti Shi Jian Quan De Ke Neng ;

Ru Yu Dao Yi Shang Wen Ti , Qing Kai Fa Zhe Zi Xing Shi Yong Xiang Guan Guan Li Gong Ju Jie Jue .

Cheng Gong Fan Hui true, Shi Bai Fan Hui falseYu Shi Bai Xin Xi string,

Duan Kai


function mongo:close() return nil end

Ci Fang Fa Wu Fan Hui Zhi .

2. CRUDCao Zuo

Cha Xun Yu Ju


function mongo:find(database, collect, filter, option) return info, id | nil, string end

  • database - stringLei Xing , MongoDBDe Shu Ju Ku Ming Cheng ;

  • collect - stringLei Xing , MongoDBDe Ji He Ming Cheng ;

  • filter - tableLei Xing , Yi Ge Fu He Yu Fa Gui Fan De Cha Xun Tiao Jian ;

  • option - tableLei Xing , Ke Xuan Can Shu (option.sort/option.limit/option.skip/option.cursor/option.size/option.project);

filterKe Yi Yong Zuo Cha Xun De Guo Lu Tiao Jian , Li Ru : { nickname = "Li Xiao Long " }Huo Yi Ge Kong Biao ; (Dan Shi Bu Neng Wei Kong Shu Zu );

optionCan Shu De Zu He Zuo Yong Wei You Biao Fen Ye Yu Tiao Yue Fen Ye :

* Tiao Yue Fen Ye (`limit`Yu `skip`): Cao Zuo Fang Shi Lei Si Jie Gou Hua Shu Ju Ku `MySQL`, `Oracle`Deng De `LIMIT`Yu `OFFSET`;

* You Biao Fen Ye (`cursor`Yu `size`):Mei Ci Die Dai (Bao Gua Di Yi Ci )Fan Hui `size`Tiao Shu Ju Yu Xia Ci Die Dai De You Biao `ID`(You Biao `ID`Shi Yi Ci Xing De );

sortCan Shu Zhi Ding Liao Pai Xu De Fang Shi , Biao Da Shi Wei : {sort = {age = 1}} Huo Zhe {sort = {age = -1}}, (1)Sheng Xu , (-1)Jiang Xu ;

projectCan Shu Zhi Ding Liao Cha Xun Shi Ke Yi Shai Xuan Chu Xu Yao Fan Hui De Zi Duan , Zhe Zai Xu Yao Guo Lu Ji He Zi Duan De Qing Kuang Xia Shi Yong Fei Chang You Xiao ;

Cheng Gong Fan Hui tableLei Xing De infoYu integerLei Xing De cursor id, Shi Bai Fan Hui falseYu Shi Bai Xin Xi string.

Cha Ru Yu Ju


function mongo:insert(database, collect, documents, option) return info | nil, string end

  • database - stringLei Xing , MongoDBDe Shu Ju Ku Ming Cheng ;

  • collect - stringLei Xing , MongoDBDe Ji He Ming Cheng ;

  • documents - tableShu Zu Lei Xing , Bao Han (Zhi Shao )You Yi Ge Huo Zhe Duo Ge (Ke Xuan )Wen Dang De Shu Zu ;

  • option - tableLei Xing , Ke Xuan Can Shu (option.ordered);

documentsWei Wen Dang Shu Zu , Ji Shi Zhi Cha Ru Yi Tiao Shu Ju Ye Ying Gai Shi Yong Zhe Yang De Shu Zu Biao Da Shi : { {nickname = "Ming Cheng ", age = 18 }};

option.orderedMo Ren Wei false(Ru Guo Cha Ru Duo Tiao De Shi Hou Chu Cuo , Ze Hu Lue Bing Ji Xu Chu Li Hou Xu Shu Ju ), She Zhi Wei trueZe Hui Bu Zai Chu Li Hou Xu Shu Ju ;

Cheng Gong Fan Hui tableLei Xing De info, Shi Bai Fan Hui falseYu Shi Bai Xin Xi string.

Geng Xin Yu Ju


function mongo:update(database, collect, filter, set, option) return info | nil, string end

  • database - stringLei Xing , MongoDBDe Shu Ju Ku Ming Cheng ;

  • collect - stringLei Xing , MongoDBDe Ji He Ming Cheng ;

  • filter - tableLei Xing , Cha Xun Guo Lu De Tiao Jian ;

  • set - tableLei Xing , Cha Xun Xiu Gai De Nei Rong ;

  • option - tableLei Xing , Ke Xuan Can Shu (option.upsert/option.multi);

filterKe Yi Yong Zuo Cha Xun De Guo Lu Tiao Jian , Li Ru : { nickname = "Li Xiao Long " }Huo Yi Ge Kong Biao ; (Dan Shi Bu Neng Wei Kong Shu Zu );

setCan Shu Wei Yi Ge Wen Dang Huo Zhe Wen Dang Geng Xin Yu Fa , Ju Ti Shi Yong Fang Shi Lei Si mongo shellYu Fa :

* `mongo:update('db', 'table', { name = "123" }, { ['$set'] = { name = "234" } } )`

* `mongo:update('db', 'table', { name = "123" }, { ['$inc'] = { age = 1 } } )`

* `mongo:update('db', 'table', { name = "123" }, { ['$unset'] = { age = 1} } )`

option.upsertMo Ren Wei false; Ru Guo She Zhi Wei true, Ze Biao Shi Bu Cun Zai setZhi Ding De Ji Lu Ze Cha Ru ;

option.multiMo Ren Wei false(Zhi Geng Xin Zhao Dao De Di Yi Tiao Ji Lu ), Ru Guo She Zhi Wei true, Ze Biao Shi Geng Xin Suo You Ji Lu ;

Cheng Gong Fan Hui tableLei Xing De info, Shi Bai Fan Hui falseYu Shi Bai Xin Xi string.

Shan Chu Yu Ju


function mongo:delete(database, collect, option) return info | nil, string end

  • database - stringLei Xing , MongoDBDe Shu Ju Ku Ming Cheng ;

  • collect - stringLei Xing , MongoDBDe Ji He Ming Cheng ;

  • filter - tableLei Xing , Cha Xun Guo Lu De Tiao Jian ;

  • option - tableLei Xing , Ke Xuan Can Shu (option.one);

filterKe Yi Yong Zuo Cha Xun De Guo Lu Tiao Jian , Li Ru : { nickname = "Li Xiao Long " }Huo Yi Ge Kong Biao ; (Dan Shi Bu Neng Wei Kong Shu Zu );

option.oneShu Xing Zhi Ding Wei 1Biao Shi Zhi Shan Chu 1Tiao Shu Ju , Qi Ta Zhi Yu Mo Ren Qing Kuang Xia Du Biao Shi Shan Chu Suo You Pi Pei Xiang ;

Cheng Gong Fan Hui tableLei Xing De info, Shi Bai Fan Hui falseYu Shi Bai Xin Xi string.

3. Ju He Cao Zuo

Tong Ji Cha Xun


function mongo:count(database, collect, filter) return info | nil, string end

  • database - stringLei Xing , MongoDBDe Shu Ju Ku Ming Cheng ;

  • collect - stringLei Xing , MongoDBDe Ji He Ming Cheng ;

  • filter - tableLei Xing , Cha Xun Guo Lu De Tiao Jian ;

Gen Ju filterCan Shu De Guo Lu Tiao Jian (Ke Yi Wei Kong ), Tong Ji Ji He Nei Fu He Guo Lu Tiao Jian De Shu Liang ;

Cheng Gong Fan Hui tableLei Xing De info, Shi Bai Fan Hui falseYu Shi Bai Xin Xi string.

Ju He Cha Xun


function mongo:aggregate(database, collect, filters, option) return info | nil, string end

  • database - stringLei Xing , MongoDBDe Shu Ju Ku Ming Cheng ;

  • collect - stringLei Xing , MongoDBDe Ji He Ming Cheng ;

  • filters - tableLei Xing , Cha Xun Guo Lu De Tiao Jian De Shu Zu ;

Ci Fang Fa De Fan Hui Zhi Nei Rong Hui Gen Ju Shi Ji filterNei De Ti Gong De Can Shu Biao Da Shi Fan Hui Bu Tong De Nei Rong ;

Cheng Gong Fan Hui tableLei Xing De info, Shi Bai Fan Hui falseYu Shi Bai Xin Xi string.

Shi Yong Shi Li :

Yi Xia Shi Li Zhan Shi Liao Ji Chu APIDe Shi Yong Fang Fa .

1. CRUDCao Zuo
require"utils"

local mongo = require "mongo"
local bson = require "mongo.bson"

local m = mongo:new {
db = "mydb", -- Shou Quan DBMing Cheng
username = "admin", -- Shou Quan Yong Hu Ming Cheng
password = "admin", -- Shou Quan Yong Hu Mi Ma
}

require "logging":DEBUG("Kai Shi ")

local ok, err = m:connect()
if not ok then
return print(false, err)
end

local database, collect = "mydb", "table"

local tab

tab, err = m:insert(database, collect, {
{ nickname = "Che Xian Sheng ", age = 30, ts = bson.timestamp(), nullptr = bson.null(), regex = bson.regex("/Xian Sheng /i"), uuid = bson.uuid() },
{ nickname = "Che Tai Tai ", age = 26, ts = bson.timestamp(), nullptr = bson.null(), regex = bson.regex("/Tai Tai /i"), guid = bson.guid() },
})
if not tab then
return print(false, err)
end
var_dump(tab)

tab, err = m:find(database, collect)
if not tab then
return print(false, err)
end
var_dump(tab)

tab, err = m:update(database, collect, { nickname = "Che Tai Tai " }, { ["$set"] = { nickname = "Che Xian Sheng " }})
if not tab then
return print(false, err)
end
var_dump(tab)

tab, err = m:find(database, collect)
if not tab then
return print(false, err)
end
var_dump(tab)

tab, err = m:delete(database, collect, { nickname = "Che Xian Sheng " } )
if not tab then
return print(false, err)
end
var_dump(tab)

m:close()

require "logging":DEBUG("Jie Shu ")

Shu Chu Ru Xia :

[candy@MacBookPro:~/Documents/cfadmin] $ ./cfadmin
[2021-02-28 13:26:35,947] [@script/main.lua:94] [DEBUG] : "Kai Shi "
{
["acknowledged"] = true,
["insertedCount"] = 2,
}
{
[1] = {
["_id"] = "603b298bb7bacd21ef3c59d9",
["regex"] = "/Xian Sheng /i",
["nickname"] = "Che Xian Sheng ",
["age"] = 30,
["nullptr"] = userdata: 0x0,
["ts"] = 1614489995947,
["uuid"] = "ba1c1b0c-191b-4480-9d68-cb4c5755cd5d",
},
[2] = {
["_id"] = "603b298bb7bacd21ef3c59da",
["regex"] = "/Tai Tai /i",
["nickname"] = "Che Tai Tai ",
["guid"] = "f47bf20c-7a7f-4c61-603b-298b2507b289",
["age"] = 26,
["nullptr"] = userdata: 0x0,
["ts"] = 1614489995947,
},
}
{
["matchedCount"] = 1,
["modifiedCount"] = 1,
["acknowledged"] = true,
}
{
[1] = {
["_id"] = "603b298bb7bacd21ef3c59d9",
["regex"] = "/Xian Sheng /i",
["nickname"] = "Che Xian Sheng ",
["age"] = 30,
["nullptr"] = userdata: 0x0,
["ts"] = 1614489995947,
["uuid"] = "ba1c1b0c-191b-4480-9d68-cb4c5755cd5d",
},
[2] = {
["_id"] = "603b298bb7bacd21ef3c59da",
["regex"] = "/Tai Tai /i",
["nickname"] = "Che Xian Sheng ",
["guid"] = "f47bf20c-7a7f-4c61-603b-298b2507b289",
["age"] = 26,
["nullptr"] = userdata: 0x0,
["ts"] = 1614489995947,
},
}
{
["acknowledged"] = true,
["deletedCount"] = 2,
}
[2021-02-28 13:26:35,961] [@script/main.lua:135] [DEBUG] : "Jie Shu "
2. Ju He Cao Zuo
require"utils"

local mongo = require "mongo"
local bson = require "mongo.bson"

local m = mongo:new {
db = "mydb", -- Shou Quan DBMing Cheng
username = "admin", -- Shou Quan Yong Hu Ming Cheng
password = "admin", -- Shou Quan Yong Hu Mi Ma
}

require "logging":DEBUG("Kai Shi ")

local ok, err = m:connect()
if not ok then
return print(false, err)
end

local database, collect = "mydb", "table"

local tab, id

tab, err = m:count(database, collect, {})
if not tab then
return print(false, err)
end
var_dump(tab)

tab, id = m:aggregate(database, collect
,{
{ ["$match"] = {age = 26} },
{ ["$sort"] = {_id = -1} },
}
,{
-- cursor = 8896207551195673826, -- You Biao De Xie Fa .
-- size = 3, -- Ju He Han Shu Nei Dan Du Zhi Ding sizeWu Yi Yi , Ru You Bi Yao Qing Zai filetersLi Shi Yong $limit
}
)
if not tab then
return print(false, err)
end
print(tab, #tab, id)
-- var_dump(tab)

require "logging":DEBUG("Jie Shu ")

Shu Chu Ru Xia :

Candy@CandyMi MSYS ~/stt_trade
$ ./cfadmin.exe
[2021-03-02 14:15:47,675] [@script/main.lua:92] [DEBUG] : "Kai Shi "
{
["acknowledged"] = true,
["count"] = 122,
}
table: 0x8000f9f30 101 4732584172034615803
[2021-03-02 14:15:47,685] [@script/main.lua:130] [DEBUG] : "Jie Shu "
3. Suo Yin Cao Zuo
local mongo = require "mongo"

require "utils"

local m = mongo:new { db = "mydb" }

if not m:connect() then
return print(false, "Lian Jie Shi Bai ")
end

local tab, info = m:create_indexes("mydb", "test", { nickname = 1, age = -1}, { unique = 1, background = 1})
if not tab then
return print(false, info)
end
var_dump(tab)

local tab, info = m:get_indexes("mydb", "test")
if not tab then
return print(false, info)
end
var_dump(tab)

local tab, info = m:drop_indexes("mydb", "test", "nickname_1_age_1")
if not tab then
return print(false, info)
end
var_dump(tab)
4. GridFSCao Zuo
require "utils"
local mongo = require "mongo"

local m = mongo:new { db = "mydb" }

if not m:connect() then
return print(false, "Lian Jie Shi Bai ")
end

local tab, id = m.gridfs:gridfs_find("mydb", "fs", { })
if not tab then
return print(false, id)
end
print(id)
var_dump(tab)

if id > 0 then
local tab, id = m.gridfs:gridfs_find("mydb", "fs", {}, id)
if not tab then
return print(false, id)
end
print(id)
var_dump(tab)
end

local tab, info = m.gridfs:gridfs_delete("mydb", "fs", {})
if not tab then
return print(false, info)
end
var_dump(tab)
5. DBDe Shi Yong
require "utils"
local DB = require "mongo.DB"

local m = DB:new { db = "mydb" }

if not m:connect() then
return print(false, "Lian Jie Shi Bai ")
end

local tab, id = m:find("mydb", "test", { })
if not tab then
return print(false, id)
end
var_dump(tab)

local tab, id = m:delete("mydb", "test", { })
if not tab then
return print(false, id)
end
var_dump(tab)

local tab, id = m:find("mydb", "test", { })
if not tab then
return print(false, id)
end
var_dump(tab)

Ti Shi

  • Ru Xu Shan Chu Shu Ju Qing Yi Ding Zhu Yi Shi Yong Fang Fa De Xing Wei Shi Fou Ru Ni Yu Qi .

  • Dui bsonKu De Xing Neng You Yi Ding De Yao Qiu , Qing Wu Bi Bian Yi lbson.soKu Wen Jian Chu Lai .

  • Dang Mou Zi Duan Xu Yao Cha Ru Kong Shu Zu De Shi Hou , Ke Yi Shi Yong Nei Zhi De bson.empty_array()Fang Fa Jin Xing Gou Zao .

  • Cha Xun Wei Zhi Ding cursorDan Shi Zhi Ding Liao size, Shu Ju Ru Guo Chao Chu sizeJiu Hui Fan Hui You Biao ID.

  • Yi Xie Te Shu Shu Ju Lei Xing (bson.objectid)Xu Yao bsonDe Gou Zao Fang Fa Lai Bian Ma Chuan Di , Ru Guo You Yi Wen Ke Yi Zi Xun Zuo Zhe .

  • Shou Quan Jin Zhi Chi Yong Hu Ming /Mi Ma Shou Quan (SCRAM-SHA-1);

  • Ben Qu Dong Jin Zhi Chi MongoDB 3.6Ji Yi Shang Ban Ben ;

Jian Yi

  • Shi Yong VS CODEAn Zhuang lua-language-serverCha Jian Hou Shi Yong Hui Zi Dong De Dao Shang Shu Dai Ma Bu Quan Yu Bian Ma Ti Shi ;

  • Ru Guo Nin You Geng Hao De Xu Qiu Yu Jian Yi Qing Liu Yan Dao ISSUE, Zuo Zhe Zai Shou Dao Hou Hui Jin Kuai Hui Fu Bing Yu Nin Jin Xing Gou Tong ;

LICENSE

BSD LICENSE

About

lua mongo driver implemented by cfadmin.

Topics

Resources

Readme

License

BSD-3-Clause license

Stars

Watchers

Forks

Releases

No releases published

Packages

Contributors