mongo_clients
简介
通过格式化配置创建mongo数据库的操作客户端对象
需要预先加载格式化配置的mongo数据库(组织方式以及访问方式);
访问方式有两种:一是通过pkg.mongoc直接操作数据库,需要指明一种是通过pkg.remote_mongoc间接数据库;
组织方式主要是:数据库有哪些表;哪些字段需要创建唯一索引、哪些字段需要创建普通索引、哪些字段需要参与校验和计算等等;
组件接口
MongoClient.gs
通过pkg.mongoc操作mongo数据库的客户端对象
函数原型 | 函数作用 |
---|---|
string get_name() | 获取本客户端的名称 |
string get_db() | 获取所操作的数据库的名字 |
array get_checksum_fields(string coll_name) | 获取指定名称的集合的参与校验和计算的字段列表 |
object get_or_create_collection(string name, map fields = nil, array checksum_fields = nil) | 获取指定名称的集合的操作对象,如果不存在则创建 |
object get_coll(string name) | 获取指定名称的集合的操作对象 |
object get_gridfs(string name) | 获取指定名称的gridfs的操作对象 |
mixed transaction(function fn, ...) | 执行一个事务 |
object client() | 获取本对象封装的数据库客户端连接对象 |
mongo_clients.gs
函数原型 | 函数作用 |
---|---|
void setup(map mongoc_cfg, array dbs = nil) | 启动mongodb服务 |
void iterate_dbs(function fn) | 遍历所有数据库配置 |
string get_name_from_config(map db_info, map para) | 从数据库信息和额外参数中根据规则获得数据库的称呼 |
string get_db_from_config(map db_info, map para) | 从数据库信息和额外参数中根据规则获得数据库的名字 |
void add_db(map db_config) | 加载一个格式化的数据库配置 |
map get_db_config(string db_name) | 获取指定名称的数据库配置 |
object new_client_from_config(map db_config) | 通过一个数据库的格式化配置创建一个操作客户端对象 |
object new_remote_client(map remote_cfg, map db_info, map collections, map para = ) | 通过一个数据库的格式化配置创建一个通过pkg.remote_mongoc操作的客户端对象 |
object new_client(map db_info, map collections, map para = ) | 通过一个数据库的格式化配置创建一个通过pkg.mongoc操作的客户端对象 |
void name_client(string name, object client) | 为 一个操作对象命名 |
object find_client(string name) | 根据名称找到操作对象 |
void dumps() | 输出调试信息 |
map parse_uri(string uri) | 解析uri |
RemoteMongoClient.gs
通过pkg.remote_mongoc操作mongo数据库的客户端对象
函数原型 | 函数作用 |
---|---|
string get_name() | 获取本客户端的名称 |
string get_db() | 获取所操作的数据库的名字 |
object get_coll(string name) | 获取指定名称的集合的操作对象 |
样例
#pragma parallel
import gs.lang.*;
import gs.util.*;
import pkg.mongo_clients;
public void sample()
{
map mongoc_cfg = {
"thread_num" : 2,
};
array dbs = [
];
map db_config = {
"db" : {
"name" : "base",
"db" : "base",
"host" : "127.0.0.1",
"port" : 27017,
"auth" : {},
"collection_checksum" : {
"users" : ["account_id"],
},
},
"collections" : {
"users" : {
"account_id" : false, // =false, normal索引
"account" : false, // =false, normal索引
"rid" : true, // =true, unique索引
"name" : false, // =false, normal索引
"__unique_index" : [ // 其他unique索引
[ "account", "rid" ],
[ "account_id", "rid" ]
],
"__normal_index" : [ // 其他normal索引
[ "rid", "name" ]
]
},
},
"para" : {
"name" : "base@local", // 比"db"字段中的name优先
"db" : "local_base", // 比"db"字段中的"db"优先
}
};
dbs.push_back(db_config);
// 启动服务
mongo_clients=>setup(mongoc_cfg, dbs);
// 通过名称获取操作对象
object local_client = mongo_clients.find_client("base@local");
printf("name=%M\n", local_client.get_name());
printf("db=%M\n", local_client.get_db());
// 获取集合操作对象
object coll_users = local_client.get_coll("users");
printf("coll_users: %M\n", coll_users);
// 通过集合对象(pkg.mongoc.async_collection)操作数据
//
}