mongodb cxx driver学习

mongodb

增删改查

  • insert 向集合中增加一个文档
  • remove 删除文档
  • update 更新(修改)某些文档
    • 文档替换
    • 文档修改器,只修改文档某个部分
  • find 返回集合中所有文档
  • findOne 返回集合中的某一个文档

tutorial

  • 建立连接
    • mongocxx::instance
    • mongocxx::uri
    • mongocxx::client
  • 访问数据库、集合
    • 使用 []操作符
    • database()方法、collection()方法
  • 访问文档中的fields
    • 使用 []操作符
    • 返回的是bsoncxx::document::element
    • 如何判断是否返回有效值?(有这个fields)
    • 由element转换为代码中使用的各种类型?
bsoncxx::document::element element = view["name"];
if(element.type() != bsoncxx::type::k_utf8) {
  // Error
}
std::string name = element.get_utf8().value.to_string();
  • bsoncxx::type中规定的类型
    • k_utf8 string类型?
    • 待补充
    • 待补充
    • 待补充
  • 创建BSON文档的方法
    • bsoncxx::builder::stream
    • bsoncxx::builder::basic
    • one-off builder functions
using bsoncxx::builder::basic::kvp;

// { "hello": "world" }
bsoncxx::document::value document = bsoncxx::builder::basic::make_document(kvp("hello", "world"));
  • 文档的两种存在状态
    • bsoncxx::document::value
    • bsoncxx::document::view
      • view转换成string
stdx::string_view view = e.get_utf8().value;
string name = view.to_string();
  • 在集合中查询文档
    • find
      • 返回mongocxx::cursor
    • find_one
      • 返回std::optional
      • 因此判断是否存在这个field只需像指针是否为空那样
      • 将返回的结果转换成json, bsoncxx::to_json()
  • 插入、更新、删除文档
    • insert_many insert_one
    • update_many update_one
    • delete_many delete_one
  • 多线程与连接池
    • 每个线程都有独立的client及其子类

参考文献

http://mongocxx.org/
https://stackoverflow.com/questions/35920013/new-c-mongo-driver-how-to-see-type-and-how-to-get-string-value

猜你喜欢

转载自www.cnblogs.com/wangzhiyi/p/9750939.html