NoSQL的CURD结构体的定义
2024-09-26 11:43:44
NoSQL的CURD结构体的定义
flyfish 2015-7-23
參考MongoDB Wire Protocol
在这里document部分使用json表示 使用boost::property_tree解析
#pragma once
#include <boost/property_tree/ptree.hpp>
#include <boost/property_tree/json_parser.hpp> struct MsgHeader
{
int messageLength;
int requestID;
int responseTo;
int opCode;
}; //操作类型 主要是增删改查
enum Operations
{
dbUpdate = 2001,
dbInsert = 2002,
dbQuery = 2003,
dbDelete = 2004 }; const char * opToString( int op ) {
switch ( op ) {
case 0: return "none"; case dbUpdate: return "update";
case dbInsert: return "insert";
case dbQuery: return "query";
case dbDelete: return "remove"; default:
// 输出异常信息 cannot translate opcode
return "";
}
} typedef boost::property_tree::ptree ObjectNotation;
struct OP_UPDATE
{
MsgHeader header;
int ZERO;
string ObjectName;
int flags;
ObjectNotation selector;
ObjectNotation update;
}; //selector {ID:1}
//update {key1:"value1",key2:"value2"}
//相当于SQL UPDATE ObjectName SET key1=value1,key2=value2 WHERE ID=1 struct OP_INSERT
{
MsgHeader header;
int flags;
string ObjectName;
ObjectNotation* ObjectNotations;
};
//ObjectNotations { ID:1, key1:value1, key2:value2 }
//相当于SQL INSERT INTO ObjectName(ID,key1,key2)VALUES (1,value1,value2) struct OP_QUERY
{
MsgHeader header;
int flags;
string ObjectName ;
int numberToSkip;
int numberToReturn; ObjectNotation query;
ObjectNotation returnFieldsSelector; }; //query { ID: "1 },
//returnFieldsSelector { ID: 1, Name: 1}
//相当于SQL SELECT ID, Name FROM ObjectName WHERE ID=1 struct OP_DELETE
{
MsgHeader header;
int ZERO;
string ObjectName ;
int flags;
ObjectNotation selector;
};
//selector { ID: "1" }
//相当于SQL DELETE FROM ObjectName WHERE ID = 1
最新文章
- String,StringBuffer,StringBuilder的区别
- coreData部分报错:This NSPersistentStoreCoordinator has no persistent stores.
- HTTP 协议中GET和POST到底有哪些区别
- 重复数据分析的三个常用语法distinct, group by, partition by
- Tensorflow学习笔记3:TensorBoard可视化学习
- gulp下静态资源的合并、压缩、MD5后缀
- Android ImageView的scaleType属性与adjustViewBounds属性(转载)
- undefined reference to libiconv_open&#39;
- RTSP交互命令简介及过程参数描述
- Programming Impala Applications
- rsync服务安装
- iOS 数组里面取字典的值
- Oracle查询速度慢的原因总结
- Django 入门案例开发(中)
- C++相关:动态内存和智能指针
- python之log
- BeanUtils的copyproPerties方法的用法
- .netcore读取配置文件
- 根据IP获取所在的国家城市
- vijos 1360 八数码问题 - 启发式搜索