import win.ui; /*DSG{{*/ var winform = win.form(text="mongodbDemo";right=759;bottom=469) winform.add( edit={cls="edit";left=15;top=11;right=743;bottom=446;edge=1;hscroll=1;multiline=1;vscroll=1;z=1} ) /*}}*/
winform.show();
import process.popen import fsys var path=io.fullpath("/mongod.exe") fsys.createDir("c:\testdata") var prcs = process.popen(path,"--dbpath c:\testdata")
prcs.logResponse(winform.edit); sleep(3000)
import console; dll := raw.loadDll("\libmongoc-1.0.dll", ,"cdecl"); mongoc_init = dll.api("mongoc_init", "bool()"); mongoc_cleanup = dll.api("mongoc_cleanup", "bool()"); mongoc_client_new = dll.api("mongoc_client_new", "int(string a1)"); mongoc_client_destroy = dll.api("mongoc_client_destroy", "int(int a1)"); mongoc_client_get_database = dll.api("mongoc_client_get_database", "int(int a1,string a2)"); mongoc_database_destroy = dll.api("mongoc_database_destroy", "int(int a1)"); mongoc_client_get_collection = dll.api("mongoc_client_get_collection", "int(int a1,string a2,string a3)"); mongoc_collection_destroy = dll.api("mongoc_collection_destroy", "int(int a1)"); mongoc_collection_find = dll.api("mongoc_collection_find", "int(int a1,int a2,int a3,int a4,int a5,int a6,int a7,int a8)"); mongoc_cursor_next = dll.api("mongoc_cursor_next", "byte(int a1,int &a2)"); mongoc_collection_insert = dll.api("mongoc_collection_insert", "byte(int a1,int a2,int a3,int a4,struct &a5)"); mongoc_collection_update =dll.api("mongoc_collection_update", "byte(int a1,int a2,int a3,int a4,int a5,struct &a6)"); mongoc_collection_remove = dll.api("mongoc_collection_remove", "byte(int a1,int a2,int a3,int a4,struct &a5)"); mongoc_client_command_simple = dll.api("mongoc_client_command_simple", "byte(int a1,string a2,int a3,int a4,int a5,struct &a6)"); mongoc_collection_command_simple = dll.api("mongoc_collection_command_simple", "byte(int a1,int a2,int a3,int a4,struct &a5)"); mongoc_database_command_simple = dll.api("mongoc_database_command_simple", "int(int a1,int a2,int a3,int a4,int a5,struct &a6)");
bdll := raw.loadDll("\libbson-1.0.dll",,"cdecl"); bcon_new = bdll.api("bcon_new", "int()"); bson_destroy = bdll.api("bson_destroy", "int(int a1)"); bson_oid_init = bdll.api("bson_oid_init", "int(int &a1,int a2)"); bson_as_json = bdll.api("bson_as_json", "string(int a1,int a2)"); bson_append_utf8 =bdll.api("bson_append_utf8", "int(int a1,string a2,int a3,string a4,int a5)"); bson_append_oid =bdll.api("bson_append_oid", "int(int a1,string a2,int a3,int &a4)"); bson_new_from_json =bdll.api("bson_new_from_json", "int(string a1,int a2,struct &a3)");
class Bsonerr{ INT domain=0; INT code=0; byte err[504]; } bserr=Bsonerr(); //初始化 if (mongoc_init()) console.log("初始化成功"); //连接mongodb获得client句柄 client = mongoc_client_new("mongodb://localhost:27017"); console.log("client", client); //执行client命令操作(ping) import web.json var tab={ping=1} json=web.json.stringify(tab); commad=bson_new_from_json(json,-1,bserr); if(!commad){ console.log(commad,"bson",bserr.code,bserr.err) } var a=bcon_new(); r=mongoc_client_command_simple (client, "admin", commad, 0, a, bserr); bson_destroy(commad) console.logPause(bson_as_json(a,0)); if(!r){ console.log(r,bserr.code,bserr.err); console.logPause("连接错误,程序将关闭"); //销毁client句柄 mongoc_client_destroy(client); //销毁初始化 ab = mongoc_cleanup(); return win.quitMessage(); } //连接数据库获得database句柄 database = mongoc_client_get_database(client, "test"); console.log("database", database); //连接集合获得collection句柄 collection = mongoc_client_get_collection(client, "testa", "demo"); console.log("collection", collection); console.pause();
//创建insert空bson insert=bcon_new(); var a=0; //获取oid r,a=bson_oid_init(a,0); //空bson追加_id字段和oid值 bson_append_oid(insert,"_id",-1,a);
//bson_append_utf8(insert,"_id",-1,"65af647f0000000080eef4a2",-1) //json追加aaa字段和bbbbbbb值 bson_append_utf8(insert,"aaa",-1,"bbbbbbb",-1);
//插入
r=mongoc_collection_insert(collection,0,insert,0,bserr); if(!r){ console.log(r,bserr.code,bserr.err)
}
//更新 //从json文本创建udate的bson json='{"time":1705890869470,"data":{"live_addr":"省县街道路2号1","live_street":"镇","name":"张三","phone_number":"1234567890","pid":"000000000000000000","temp_addr":"街道路2号1"},"code":200,"errMsg":null,"errCode":null,"msg":"success"}' update=bson_new_from_json(json,-1,bserr); if(!update){ console.log(update,"bson",bserr.code,bserr.err) } console.pause();
//用update的bson更新之前insert的bson r=mongoc_collection_update (collection, 0, insert, update, 0, bserr) if(!r){ console.log(r,bserr.code,bserr.err) }
//销毁insert的bson bson_destroy(insert); //销毁update的bson bson_destroy(update);
//查询 console.pause(); //创建query空bson query = bcon_new(); console.pause(); json='{"data.name":"张三"}' query=bson_new_from_json(json,-1,bserr)
console.pause() console.more(1,true) console.logPause(bson_as_json(query,0)) cursor = mongoc_collection_find(collection, 0, 0, 3, 0, query, 0, 0); console.log("cursor", cursor);
//查询结果 var a=0; result,a= mongoc_cursor_next(cursor, a); console.log("result", result,a); console.pause() while (result) { str=bson_as_json(a,0); console.log(str); result,a= mongoc_cursor_next(cursor, a); } //销毁query空bson bson_destroy(query); //删除
json='{"_id":"65af909e000000004f5f0803"}' remove=bson_new_from_json(json,-1,bserr);
if(!remove){ console.log("转换json文本错误",bserr.code,bserr.err) }
console.pause(); r=mongoc_collection_remove(collection,0,remove,0,bserr); if(!r){ console.log(r,bserr.code,bserr.err) }
//销毁remove的bson bson_destroy(remove);
//销毁collection句柄 mongoc_collection_destroy(collection); //销毁database句柄 mongoc_database_destroy(database); //销毁client句柄 mongoc_client_destroy(client); //销毁初始化 ab = mongoc_cleanup(); console.log(ab); console.pause();
win.loopMessage();
|