Mongodb时间问题】的更多相关文章

mongdb时间类型 Date() 显示当前的时间 new Date 构建一个格林尼治时间   可以看到正好和Date()相差8小时,我们是+8时区,也就是时差相差8,所以+8小时就是系统当前时间 ISODate() 也是格林尼治时间 > Date() Sun Jan :: GMT+ (CST) > new Date() ISODate("2016-01-24T12:40:24.035Z") > ISODate() ISODate("2016-01-24T1…
MongoDB保存到数据库的时候,默认为UTC时间,在数据库保存时,会和当前时间有个间隔,差距为8小时. 在读取的时候,需要再次转换回来,比较麻烦. 其实,Mongo本身就已经提供了相应的处理方法,即在实体类中加个属性即可.具体如下: [BsonDateTimeOptions(Kind = DateTimeKind.Local)] public DateTime OperTime { get; set; }   最后结果如图:  虽然数据库里保存的还是差8小时,但是,用程序读取出来后会是正常时间…
一 . 背景需求 在日常的业务需求中,我们往往会根据时间段来统计数据.例如,统计每小时的下单量:每天的库存变化,这类信息数据对运营管理很重要. 这类数据统计依赖于各个时间维度,年月日.时分秒都有可能.因为需求变化多样,并且表的设计有严格的规范,我们不可能将订单的下单时间分别拆分存储到 年.月.日.时.分.秒.毫秒列(字段)中.在实际应用中,我们一般都是通过转换函数进行时间转换的. 大家可能对关系型数据库(例如,SQL Server.MySQL)中的时间转换函数和依据时间段进行聚合操作比较熟悉了,…
1.mongodb官网下载:http://www.mongodb.org/downloads 2.双击程序安装,会出现如下,卡着不动,时间太久,也取消不了 3.是因为安装时默认勾选 compass 图像管理工具,可以先不安装 4.打开任务管理器,结束安装进程 5.重新安装时,取消 compass 的默认勾选 6.单独下载图形管理工具…
背景: 拦截件监控时,对于签收的数据需要比较签收时间和实际同步数据的时间来判断  同步时间是在签收前还是签收后.在比较时,用到同步时间syncTime和signTime, signTime从Q9查单获取,为 local time,syncTime 在 mongodb 中查出,为 UtcTime. 问题: 在 utc time 和 local time 比较时,不会带着时区比较,如图 导致监控数据比较时,判断差了8h.大部分数据都是下发时间在签收后的,但是被判断成在签收前, 发现该问题是通过跟着几…
1:创建测试数据 > use maxiangqian switched to db maxiangqian "}) WriteResult({ "nInserted" : }) "}) WriteResult({ "nInserted" : }) "}) WriteResult({ "nInserted" : }) 2:做一个全备份 /bin/mongodump --host=10.103.16.34 --po…
Java保存到mongodb当前时间,使用RoboMongo查看数据显示时间比当前时间少8个小时,这是客户端的问题. MongoDB中的Date类型数据只保存绝对时间值,不保存时区信息,因此“显示的时间”取决于MongoDB的客户端设置. RoboMongo可以通过"Options" - "Display Dates in..." - "Local Timezone"来设置显示本地时间.…
/// <summary> /// 添加时间 /// </summary> [BsonDateTimeOptions(Kind = DateTimeKind.Local)] public DateTime CreatedTime { get; set; } 添加上面这个特性即可.添加了这个特性并不是说在保存时mongodb数据库的时间就是本地时间了.而是说在显示的时候mongodb驱动会根据这个特性自动转化成本地时间.实际存入数据库的还是0时区的时间. 为什么会这么说?在网上看了j…
golang 中解决前端time 输出,后端mongodb中时间存储. package mask import ( "fmt" "time" "go.mongodb.org/mongo-driver/bson" "go.mongodb.org/mongo-driver/bson/bsontype" ) // Timestamp extension time type Timestamp struct { Time time.T…
修改操作符 $set 修改一个域,或者增加一个域 e.g. 修改功能,如果该域不存在则增加这个域 db.class0.update({age:20},{$set:{name:'小微'}}) $unuset 删除一个域 e.g. sex后面为空表示删除一个域 db.class0.update({name:'Jame'},{$unset:{sex:''}}) $rename 修改一个域的名字 e.g. 将sex域名修改为gender db.class.update({},{$rename:{sex:…
本人学习mongodb时间不长,但是鉴于工作的需要以及未来发展的趋势,本人想更深层的认识mongodb底层的原理以及更灵活的应用mongodb,边学边工作实践.  mongodb属于nosql中算是最热门的数据库,所以我们不妨对nosql有一个最基本的了解:  NoSQL,全称是”Not Only Sql”,指的是非关系型的数据库.NoSQL 被我们用得最多的当数key-value 存储,当然还有其他的文档型的.列存储.图型数据库.xml 数据库等.与关系型数据库相比,关系型数据库给你强加了太多…
修改操作符的使用   $set 修改一个域的值,增加一个域   阿哲年龄修改为33 db.class1.update({name:'阿哲'},{$set:{age:33}})   如果sex域不存在则会添加这个域 db.class1.update({name:'阿蓉'},{$set:{sex:'w'}})   $unset 删除一个域   删除sex域 db.class1.update({name:'小陈'},{$unset:{sex:''}})   * 每个操作符可以同时操作多项 db.cla…
特点 无模式 MongoDB 中的每一条文档,都是一个 JSON 对象,因此你无需提前定义一个集合的结构,集合中的每一个文档也能够有不同的结构. 异步写入 MongoDB 默认全部的写操作都是『不安全』的,即当请求被 MongoDB 收到时,不等写入操作完毕,就返回一个『成功』的响应. 这是默认的行为,当然你也能够设置一些选项,让操作等待等待写入完毕后再返回响应.只是对于大多数应用,这样的『不安全』已经足够安全了. 简单查询 MongoDB 仅仅支持简单的查询,MongoDB 仅仅储存数据,很多…
存储数据到MongoDB数据库时,一般我们会加一个更新数据的时间update_time.这时在python代码中 会用到datetime模块以便获取当前系统时间,但是存入到MongoDB数据库时,存储的时间--显示并不是当前系统时间. 原因:MongoDB存储时间类型数据时,都是先转换为UTC时间,然后存储到数据库中. 为了让数据库中存入的显示的是本地时间,可以用如下解决办法. 解决方法:由于UTC时间与本地时间相差8个小时 如果将本地时间存入到MongoDB数据库时,将本地时间减去8小时(用到…
Hello,大家下午好. 近几天的项目有点赶,所以耽误了更新.现在给大家分享下,在安装mongodb的过程中,遇到的故障一则.其实很小白的问题,当时遇到这个问题的时候比较心慌,浪费了很多时间,跟大家分享下解决的思路吧. 先描述下我的环境,请参照前一篇博客,利用脚本初始化出4个节点(由于实验原因,我使用了单台的服务器). 首先我们启动这四个初始化节点.(具体的文件配置,请参照前文,初始化的内容,这里仅用/etc/mongodb.conf为例) [root@1]# cat /etc/mongodb.…
关于mongodb插入时间不正确的问题 mongodb插入时间: 把本地时间转换为utc时间:  也就是比本地时间少8个小时: 读取的时候又会转换本地时间: 所有一般不需处理:…
BasicDBList dateList = new BasicDBList(); dateList.add("$t"); dateList.add(28800000); DBObject time = new BasicDBObject("$add", dateList); Bson group = Aggregates.group(new Document().append("t", new Document().append("$…
MongoDB默认使用_id字段作为主键,类型为ObjectId.ObjectId的生成有一定的规则,详情可以查看这篇文章 - MongoDB深究之ObjectId.如果你在写入数据库的时候忘记写入创建时间,不用担心,完全可以通过_id字段的值来还原当时的时间.看下面的mongodb script脚本: db.getCollection('fees').find({}).forEach(function(item){ var _str = item._id.toString().substr(1…
前言 在上一篇文章中,我们有提到net访问mongodb连接超时默认为30秒,这个时间在实际项目中肯定是太长的.而MongoClientSettings 也确是提供了超时属性,如下图: 可实际使用中,仅仅设置这个参数,是不起作用的,下面实例说明. 设置超时 MongoClientSettings setting = new MongoClientSettings(); //设置超时 setting.ConnectTimeout = TimeSpan.FromMilliseconds(1000);…
一  研究背景需求 目前作者所在公司的MongoDB数据库是每天凌晨做一次全库完整备份,但数据库出现故障时,只能保证恢复到全备时间点,比如,00:30 做的完整备份,而出现故障是下午18:00,那么现有的备份机制只可以恢复到00:30,即丢失00:30 – 18:00 的操作数据. 此外,我们现在的副本集没有delay节点,当出现误操作或需要恢复到指定时间点操作时,目前灾备机制也不支持此操作.上线这种备份方案,心里总是惶惶的. 并且细究mongodump机制原理,此命令在运行过程中并不会把数据库…
登陆版权数据库,显示"此用户已到期",数据库使用的是mongodb,顾 需要将此用户的到期时间延长. 解决过程: 1)到网站对应tomcat配置里找出等里mongodb的信息(mongodb 的库.登陆用户名.密码.端口) 2)用上面的信息登陆mongodb # mongo 127.0.0.1:27017/fcyym -ufcyym_sa -padmin_hqdrm2012_root 查询这个库下所有的表> show collections 查询相应的表的字段信息> db.…
当存储到mongodb中的是string类型的时间,小tips: 1. 那么在对此域按照时间聚类(每周,每月)时就不能直接使用mongodb的time关键字了,因为mongodb有自己的时间类型,且目前它只认可自己的时间类型. 2. 假如对于时间进行简单的聚类,比如按照年,月,日,时,分,秒来聚类,我们可以使用mongodb的substr关键字模拟出mongodb能够认可的时间类型. 比如 2015-03-02 22:53:45 ---> 2014 这样截取出year,2014-03-02就是截…
背景: 最近后端基于mongo的项目越来越多,MySQL基于冷备份+binlog可以恢复至任意时间点,那么mongo是否有同样的功能呢?经过调研发现可以通过dump+oplog可以实现粒度更细致的恢复. 官方文档关于oplog的说明 : <a class="mongo-link" href="https://docs.mongodb.com/manual/core/replica-set-oplog/"></a> 以下是实验步骤,附脚本内容.…
之前对mongodb不熟,但是项目要用,因为数据量比较大,并且领导要实现抽样查询,控制数据流量,所以自己研究了下,亲测可用,分享一下! 话不多说,上代码: 第一种方案:加自增主键,实现按记录数抽样 1.记录在存入数据库时不适用默认id,改为自增id,具体实现如下: /** * 序列类,用于映射查询的序列值 * @author Administrator * */ public class MongoSequence { @Id private String id; private int seq…
关于mongodb插入时间不正确的问题 今天在给mongodb插入日期格式的数据时发现,日期时间相差8个小时,原来存储在mongodb中的时间是标准时间UTC +0:00,而中国的时区是+8.00 . 因此在插入的时候需要对时间进行处理: DateTime.SpecifyKind(DateTime.Now, DateTimeKind.Utc);…
插入时间: db.test.insert({time:new Date()}) 给mongodb插入日期格式的数据时发现,日期时间相差8个小时,原来存储在mongodb中的时间是标准时间UTC +0:00,而中国的时区是+8.00 . 取出时正确 db.test.find()[0].time.getHours() 因此在插入的时候需要对时间进行处理: db.test.insert({"Time":new Date(new Date().getFullYear()+"-&quo…
1) mongodb查看连接数: db.serverStatus().connections; 2) mongodb查看同步时间: db.printSlaveReplicationInfo();  %%查看从服务器上的同步时间 3) mongodb查看oplog分磁盘空间: db.printReplicationInfo();        %%查看oplog分配磁盘空间 4)mongodb 修改数据表名: > db.collection.renameCollection("collect…
mongodb性能分析方法:explain() 为了演示的效果,我们先来创建一个有200万个文档的记录.(我自己的电脑耗了15分钟左右插入完成.如果你想插更多的文档也没问题,只要有耐心等就可以了.) 1 for(var i=0;i<2000000;i++){ 2 db.person.insert({"name":"ryan"+i,"age":i}); 3 } MongoDB 3.0之后,explain的返回与使用方法与之前版本有了很大的变化…
(一)MongoDB恢复概述 对于任何类型的数据库,如果要将数据库恢复到过去的任意时间点,否需要有过去某个时间点的全备+全备之后的重做日志,MongoDB也不例外.使用全备将数据库恢复到固定时刻,然后使用重做日志追加全备之后的操作. 重做日志备份:MongoDB只有开启主从复制或者副本集时才会开启重做日志,主从复制存放在local数据库下的oplog.$main集合中,复制集的日志存放在local数据库下的oplog.rs集合中,该集合是一个上限集合,当达到固定大小时,最老的记录会被自动覆盖.因…
(一)MongoDB恢复概述 对于任何数据库,如果要将数据库恢复到过去的任意时间点,否需要有过去某个时间点的全备+全备之后的重做日志. 接下来根据瑞丽航空的情况进行概述: 全备:每天晚上都会进行备份: 重做日志备份:MongoDB只有开启主从复制或者副本集时才会开启重做日志,主从复制存放在local数据库下的"oplog.$main"集合中,复制集的日志存放在local数据库下的oplog.rs集合中,该集合是一个上限集合,当达到固定大小时,最老的记录会被自动覆盖.因此需要注意,Mon…