MongoDB存储时间

摘要:
之前一篇博客C++的时间中提到了MongoDB保存时间类型数据可以使用timestamp类型。不过在实际编程过程中,发现保存timestamp容易,读取难。MongoDBC++的这方面的例子还没有找到。现在提供一个简便的方法。因为时间就是自1970年0点的秒数,类型是64bit整数。下面的代码可以将一个uint64_t保存进MongoDBmongo::BSONObjBuilderbuilder;builder.append;builder.append;builder.appendNumber;builder.appendNumber;builder.appendNumber;session-˃get().insert;这里用了static_cast将类型从uint64_t转换过来。读取数据的例子代码:uint64_ttotal1=0;uint64_twork1=0;if(!

之前一篇博客C++的时间中提到了MongoDB保存时间类型数据可以使用timestamp类型。

不过在实际编程过程中,发现保存timestamp容易,读取难。MongoDB C++的这方面的例子还没有找到。现在提供一个简便的方法。因为时间就是自1970年0点的秒数(或者毫秒数),类型是 64bit整数。

下面的代码可以将一个uint64_t(C++11的新类型)保存进MongoDB

  mongo::BSONObjBuilder builder;
  builder.append("ip", cpu.ip);
  builder.append("host_name", cpu.host_name);
  builder.appendNumber("epoch", static_cast<long long>(cpu.epoch));
  builder.appendNumber("total_jiffies", static_cast<long long>(cpu.total_jiffies));
  builder.appendNumber("work_jiffies", static_cast<long long>(cpu.work_jiffies));
  session->get().insert("wind_tunnel.cpu", builder.obj());

这里用了static_cast<long long>将类型从uint64_t转换过来。

读取数据的例子代码:

  uint64_t total1 = 0;
  uint64_t work1 = 0;
  if (!result.isEmpty()) {
    total1 = result.getField("total_jiffies").numberLong();
    work1 = result.getField("work_jiffies").numberLong();

免责声明:文章转载自《MongoDB存储时间》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇三级联动下拉菜单1Nginx配置端口访问的网站下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

[轉]redis;mongodb;memcache三者的性能比較

先说我自己用的情况: 最先用的memcache ,用于键值对关系的服务器端缓存,用于存储一些常用的不是很大,但需要快速反应的数据 然后,在另一个地方,要用到redis,然后就去研究了下redis. 一看,显示自己安装了php扩展,因为有服务器上的redis服务端,自己本地就没有安装,其实用法和memcache基本一样,可能就是几个参数有所不 同。当然 它们...

Node.js躬行记(4)——自建前端监控系统

这套前端监控系统用到的技术栈是:React+MongoDB+Node.js+Koa2。将性能和错误量化。因为自己平时喜欢吃菠萝,所以就取名叫菠萝系统。其实在很早以前就有这个想法,当时已经实现了前端的参数搜集,只是后台迟迟没有动手,也就拖着。 目前完成的还只是个雏形,仅仅是搜集了错误和相关的性能参数。 后台样式采用了封装过的matrix。 分析功能还很薄弱...

MongoDB 分片问题汇总

分片是MongoDB的扩展方式,通过分片能够增加更多的机器来用对不断增加的负载和数据,还不影响应用. 1.分片简介 分片是指将数据拆分,将其分散存在不同机器上的过程.有时也叫分区.将数据分散在不同的机器上,不需要功能 强大的大型计算机就可以存储更多的数据,处理更大的负载. 使用几乎所有数据库软件都能进行手动分片,应用需要维护与若干不同数据库服务器的连接,...

Mongodb中的js语法

定义一个变量 > var len = 10; For循环 这里的db和data都可以作为对象 save是方法 接收一个临时定义的对象 > for(var i = 0; i < len; i++){db.data.save({x:i})}; WriteResult({ "nInserted" : 1 }) > db.dat...

mongodb 安装

a.安装   本人下载的是windows版本的3.2.1mongo,路径为https://fastdl.mongodb.org/win32/mongodb-win32-x86_64-2008plus-ssl-3.2.1-signed.msi   或者直接去官网也可以http://www.mongodb.org/downloads   不过需要注意的是mo...

MongoDB 高级查询_aggregate聚合管道

MongoDB 聚合管道(AggregationPipeline) 使用聚合管道可以对集合中的文档进行变换和组合。实际项目应用主要是表关联查询、数据的统计。 MongoDB 中使用 db.COLLECTION_NAME.aggregate([{<stage>},...]) 方法 来构建和使用聚合管道。下面是官网给的实例,感受一下聚合管道的用法。...