首页 > 编程语言 >mongocxx c++ 14标准,进行多表联合查询

mongocxx c++ 14标准,进行多表联合查询

时间:2023-05-31 23:11:43浏览次数:42  
标签:pipeline mongocxx 多表 14 bsoncxx kvp using teacher

 

#include <mongocxx/client.hpp>
#include <mongocxx/instance.hpp>
#include <mongocxx/uri.hpp>
#include <bsoncxx/builder/stream/document.hpp>
#include <bsoncxx/json.hpp>
#include <bsoncxx/types.hpp>

using bsoncxx::builder::stream::document;
using bsoncxx::builder::stream::finalize;
using bsoncxx::builder::stream::open_array;
using bsoncxx::builder::stream::close_array;
using bsoncxx::builder::stream::open_document;
using bsoncxx::builder::stream::close_document;
using bsoncxx::builder::stream::concatenate;
using bsoncxx::builder::basic::make_document;
using bsoncxx::builder::basic::kvp;

    
mongocxx::instance inst{}; // 实例化 Mongocxx 库 mongocxx::uri uri("mongodb://localhost:27017"); // 连接 MongoDB URI mongocxx::client conn(uri); // 创建连接实例 mongocxx::database db = conn["test_sh"]; mongocxx::collection teacher_1 = db["teacher_20230417_0_60"]; mongocxx::collection teacher_2 = db["teacher_20230417_120_180"]; // mongocxx::collection teacher_3 = db["teacher_20230417_180_240"]; auto pipeline = mongocxx::pipeline{}; pipeline.lookup({ make_document( kvp("from", "teacher_20230417_120_180"), // b表的表名 kvp("localField", "teacher_1.index_join_id"), // a表的关联外键 kvp("foreignField", "teacher_2.index_join_id"), // b表的关联外键 kvp("as", "teacher_2") // 别名 ) }); pipeline.unwind("$teacher_2"); // 如果有多个,这里需要写多个 /*pipeline.unwind("$array_field1"); pipeline.unwind("$array_field2"); pipeline.unwind("$array_field3");*/ // 这里是做展示代码 pipeline.project({ make_document( kvp("_id", 0), kvp("index", 1), kvp("time", 1), kvp("TPE02", "$teacher_2.TPE02") ) }); // 排序 // pipeline.sort(make_document(kvp("time", 1))); pipeline.limit(10); // 使用.limit()操作符限制结果数量 auto cursor = teacher_1.aggregate(pipeline); for (auto&& doc : cursor) { std::cout << bsoncxx::to_json(doc) << std::endl; }

 

标签:pipeline,mongocxx,多表,14,bsoncxx,kvp,using,teacher
From: https://www.cnblogs.com/renfanzi/p/17447617.html

相关文章

  • flink1.14.5集群(flink on yarn)部署1
    先安装hadoop,yarn,zookeeper 配置环境变量vim/etc/profile(注意新增了HADOOP_CLASSPATH变量)exportHADOOP_CLASSPATH=`/home/opt/hadoop-2.9.2/bin/hadoopclasspath`exportFLINK_HOME=/home/opt/flink-1.14.5exportPATH=$PATH:$FLINK_HOME/binsource/etc/profile......
  • 146. LRU 缓存
    主要是利用LinkedHashMap的功能LinkedHashMap继承了HashMap学到了LinkedHashMap维护双向链表的方法LinkedHashMap的Entry加入了一个before和after,用于维护Entry的加入顺序。next维护各个桶的顺序。回忆LinkedHashMap源码记得看:https://blog.csdn.net/weixin......
  • HDU1403(后缀数组--最长公共子串)
    题目:LongestCommonSubstring题意:判断给定的两个串中,最长的公共串。思路:将它们合并为一个串,然后利用后缀数组求解。首先是二倍增算法:时间复杂度为O(n*log(n))#include<stdio.h>#include<string.h>#definemax1000010intwa[max],wb[max],wv[max],ws[max];intrank[max],he......
  • HDU1421 搬寝室
    题目:搬寝室 典型的DP,状态方程:dp[k][i]=min(dp[k-1][i-2]+(a[i]-a[i-1])^2,dp[k][i-1]);        dp[k][i]表示k对物品在前i个物品的最小值#include<iostream>#include<stdio.h>#include<algorithm>#defineN2005usingnamespacestd;intdp[N/2][N];inta[N......
  • 图解LeetCode——146. LRU 缓存
    一、题目请你设计并实现一个满足 LRU(最近最少使用)缓存约束的数据结构。实现LRUCache类:LRUCache(intcapacity)以正整数作为容量 capacity初始化LRU缓存intget(intkey)如果关键字key存在于缓存中,则返回关键字的值,否则返回-1。voidput(intkey,intva......
  • Could not find the DLL(s) 'msvcp140_1.dll'. TensorFlow requires that these DLLs
      python-c"fromtransformersimportpipeline;print(pipeline('sentiment-analysis')('weloveyou'))"MicrosoftVisualC++Redistributableisnotinstalled,thismayleadtotheDLLloadfailure.                Itcanbedow......
  • 1439. 有序矩阵中的第 k 个最小数组和
    给你一个m *n的矩阵mat,以及一个整数k,矩阵中的每一行都以非递减的顺序排列。你可以从每一行中选出1个元素形成一个数组。返回所有可能数组中的第k个最小数组和。来源:力扣(LeetCode)链接:https://leetcode.cn/problems/find-the-kth-smallest-sum-of-a-matrix-with-so......
  • SqlServer2014管理工具创建用户并设置对应访问权限
     需求:创建一个具有访问权限登录的用户,用以访问指定数据库, 对其放开指定数据库的指定表  一、用户名创建以及设置1、首先使用管理员账号登陆到数据库,【安全性】-【登录名】-右键【新建登录名】 【服务器角色】页签中:用于向用户授予服务器范围内的安全特权 【用户映......
  • Gym - 101480J[判环+Hash]
    题目链接:https://vjudge.net/problem/Gym-101480J 解题思路:因为度最多为3所以流量最多不超过3对于在同一个连通块上:flow==1对于在同一个环上(可以看做有向图强连通):flow==2对于某一个点对,删除任意一条边他们还是在同一个环上,说明去掉一个流量他们的流量还是2,所以这种情况:f......
  • 4543: [POI2014]Hotel加强版[树形DP+长链剖分]
    题目链接:https://www.lydsy.com/JudgeOnline/problem.php?id=4543 解题思路:长链剖分定义:f[i][j]表示以i为根节点的子树,有多少个节点和i的距离是j的.g[i][j]表示以i为根节点的子树,在子树外一个距离i为j的点可以跟i子树内的两个点组成两两相等的方案数.那么就有:f[u][j+1]+=f[v......