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

最新文章

  1. String,StringBuffer,StringBuilder的区别
  2. coreData部分报错:This NSPersistentStoreCoordinator has no persistent stores.
  3. HTTP 协议中GET和POST到底有哪些区别
  4. 重复数据分析的三个常用语法distinct, group by, partition by
  5. Tensorflow学习笔记3:TensorBoard可视化学习
  6. gulp下静态资源的合并、压缩、MD5后缀
  7. Android ImageView的scaleType属性与adjustViewBounds属性(转载)
  8. undefined reference to libiconv_open&#39;
  9. RTSP交互命令简介及过程参数描述
  10. Programming Impala Applications
  11. rsync服务安装
  12. iOS 数组里面取字典的值
  13. Oracle查询速度慢的原因总结
  14. Django 入门案例开发(中)
  15. C++相关:动态内存和智能指针
  16. python之log
  17. BeanUtils的copyproPerties方法的用法
  18. .netcore读取配置文件
  19. 根据IP获取所在的国家城市
  20. vijos 1360 八数码问题 - 启发式搜索

热门文章

  1. Linux命令之chmod
  2. IN 运算符
  3. 安卓架构 视频 Android 插件化架构设计
  4. SQL查询中关键词的执行顺序
  5. bzoj 4430: [Nwerc2015]Guessing Camels赌骆驼
  6. [转]jquery后代和子元素的区别
  7. 为Go语言GC正名-20秒到100微妙的演变史
  8. ER TO SQL语句
  9. ArcGIS 10.2 三维分析工具箱部分工具不能用
  10. 解决marathon上docker实例一直waitting的问题