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

NoSQL的CURD结构体的定义的更多相关文章

  1. 结构体类型定义(C语言)

    结构体的定义形式如下: struct 结构体名 { 结构体成员 }: 结构体变量的定义方式有三种:1.先定义结构体,再定义变量: eg. struct student{ char name[10]; ...

  2. C /C ++中结构体的定义

    c语言中结构体的定义: struct 结构体名{ 成员列表: ..... }结构体变量: 7.1.1 结构体类型变量的定义结构体类型变量的定义与其它类型的变量的定义是一样的,但由于结构体类型需要针对问 ...

  3. 详解keil采用C语言模块化编程时全局变量、结构体的定义、声明以及头文件包含的处理方法

    一.关于全局变量的定义.声明.引用: (只要是在.h文件中定义的变量,然后在main.c中包含该.h文件,那么定义的变量就可以在main函数中作为全局变量使用) 方法1: 在某个c文件里定义全局变量后 ...

  4. Swift超详细的基础语法-结构体,结构体构造器,定义成员方法, 值类型, 扩充函数

    知识点 基本概念 结构体的基本使用 结构体构造器(构造函数/构造方法) 结构体扩充函数(方法), 又称成员方法 结构体是值类型 1. 基本概念 1.1 概念介绍 结构体(struct)是由一系列具有相 ...

  5. c语言中结构体的定义、初始化及内存分配

    #include <stdio.h> struct person { char *name; int age; }; int main() { //结构体可以定义在函数内,也可以定义到函数 ...

  6. keil采用C语言模块化编程时全局变量、结构体的定义、声明以及头文件包含的处理方法

    以前写单片机程序时总是把所用函数和变量都写在一个c文件里,后来遇到大点的项目,程序动则几千行,这种方式无疑会带来N多麻烦,相信大家都有所体验吧! 后来学会了在keil里进行模块化编程,即只把功能相同或 ...

  7. C++结构体的定义、初始化和引用

    定义: 结构体(struct)是由一系列具有相同类型或不同类型的数据构成的数据集合,也叫结构. 声明一个结构体类型的形式是: struct Student{ //声明一个结构体类型Student in ...

  8. go语言从例子开始之Example18_1.结构体中定义方法

    Go 支持在结构体类型中定义方法 . Example: package main import "fmt" type product struct{ name string num ...

  9. C++ 结构体的定义

    struct 结构体名称{    数据类型 A:    数据类型 B; }结构体变量名; 相当于: struct 结构体名称{    数据类型 A:    数据类型 B; }; struct 结构体名 ...

随机推荐

  1. centos系统mysql数据库忘记密码重置方法(ERROR 1045 28000 Access denied...)

    当mysql的密码错误的时候,就会报如下这样的错误信息 解决方法如下: 首先输入mysqld_safe --skip-grant-tables 然后停止mysql服务,输入service mysqld ...

  2. Funny Car Racing CSU - 1333 (spfa)

    There is a funny car racing in a city with n junctions and m directed roads. The funny part is: each ...

  3. Grunt Gulp Browserify Webpack

    Grunt 是相比后面几个更早的项目,他依赖于各种插件的配置.这是一个很好的解决方案,但是请相信我,你不会想看到一个 300 行的 Gruntfile Gulp 提供了一个不一样的解决方案,而不是依赖 ...

  4. 【最大流Dinic模板】HDU1532&POJ1273-Drainage Ditches(16/3/6更正)

    #include<iostream> #include<cstdio> #include<cstdlib> #include<cstring> #inc ...

  5. [BZOJ1007](HNOI2008)水平可见直线(半平面交习题)

    Description 在xoy直角坐标平面上有n条直线L1,L2,...Ln,若在y值为正无穷大处往下看,能见到Li的某个子线段,则称Li为可见的,否则Li为被覆盖的.     例如,对于直线:   ...

  6. Java高级架构师(一)第34节:Nginx的Http模块部分的指令

    默认长链接的数目在100个 默认长链接的超时时间,一般在75S.

  7. 配置友盟最新SDK遇到的问题

    编译报错  Undefined symbols for architecture i386:原因:i386是代表模拟器,显示i386错误说明静态库不支持模拟器,只支持真机.友盟最新SDK可能不支持模拟 ...

  8. Java如何判断线程池所有任务是否执行完毕

    import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; public class Tes ...

  9. android unity3d开发学习第一步

    1:下载unitysetup 开发环境 http://unity3d.com/unity/download/download-windows 2:下载三维制作软件 制作我们需要的场景 http://u ...

  10. linux安装Node(Centos)

    步骤 1.打开node官网,找到node版本的下载地址 这里我找到的地址是: https://npm.taobao.org/mirrors/node/v8.2.1/node-v8.2.1-linux- ...