• MongoDB 数组类型查询 —— $elemMatch 操作符

    描述$elemMatch 数组查询操作用于查询数组值中至少有一个能完全匹配所有的查询条件的文档。语法格式如下:{ <field>: { $elemMatch: { <query1>, <query2>, ... } } }如果只有一个查询条件就没必要使用

    Oct 21, 2019 阅读(105)
    标签: MongoDB
  • MongoDB 自动删除集合中过期的数据——TTL索引

    简介TTL (Time To Live, 有生命周期的) 索引是特殊单字段索引,MongoDB可以用来在一定时间后自动从集合中删除文档的特殊索引。 这对于某些类型的数据非常好,例如机器生成的事件数据,日志和会话信息,这些信息只需要在数据库中保留一段时间。 创建 TTL 索引,只需要在使用 db.collection.createIndex() 方法,对字段值为日期或者包含日期的数组设

    Sep 30, 2019 阅读(162)
    标签: MongoDB
  • MongoDB 谨防索引 seeks 的效率低下

    背景最近线上的一个工单分析服务一直不大稳定,监控平台时不时发出数据库操作超时的告警。运维兄弟沟通后,发现在每天凌晨1点都会出现若干次的业务操作失败,而数据库监控上并没有发现明显的异常。在该分析服务的日志中发现了某个数据库操作产生了 SocketTimeoutException。开发同学一开始希望通过调整 MongoDB Java Driver 的超时参数来规避这个问题。但经过详细分析之后,

    Sep 17, 2019 阅读(120)
    标签: MongoDB 性能优化
  • MongoDB ObjectId 隐藏了那些重要信息

    描述ObjectId(<hexadecimal>) 参数选填,24位16进制的数字。返回一个新的 ObjectId 值,其中12字节ObjectId 由以下部分组成:4个字节时间戳(24位中的前8位16进制的数字)。5个字节的随机数(3字节机器码+2字节进程id)。3个字节的基于随机数的计数器。ObjectId 实际上它是由一组十六进制的字符构成,每个字节两位的十六进制数字,总共用了12字

    Sep 6, 2019 阅读(127)
    标签: MongoDB Java
  • MongoDB 字符串字段拼接 $concat(aggregation)

    $concat拼接字符串操作,返回拼接后的字符串。语法格式如下:{ $concat: [ <expression1>, <expression2>, ... ] }参数可以是任何有效的表达式,只要它们解析为字符串即可。 有关表达式的更多信息,请参阅表达式。 示例准备以下测试数据:db.inven

    Sep 4, 2019 阅读(214)
    标签: MongoDB
  • Oracle 定时任务 — 定时执行存储过程

    插入当前时间的存储过程-- create table td_test1(created_date timestamp(6)); -- delete from td_test; -- insert into td_test(created_date) values(sysdate); --&

    Feb 26, 2019 阅读(300)
    标签: Oracle
  • MongoDB 日期字段间比较

    在实际使用 MongoDB 中难免会遇到比较文档中字段和字段间的比较查询,在MongoDB 中 $where 关键字可以实现字段间的比较,实例如下:// 查询文档中 create_date、last_modify_date 年月相同的数据 db.user.find({"$where":"this.create_date.getYear()

    Jan 28, 2019 阅读(295)
    标签: MongoDb
  • NoSQLBooster for MongoDB 中跨库关联查询

    使用 MongoDB 是我们常常会遇到一些特殊的需求需要跨库关联查询,比如订单明细缺商品重量需要补商品重量,而商品重量数据又在商品库中,这事就需要跨库关联操作,示例代码如下:// 使用 order 库,注意语句后面不要加分号 use order var count = 0; db.order_detail.find({

    Jan 4, 2019 阅读(916)
    标签: MongoDB
  • MySQL中实现 upsert 操作 & Java 实现

    该操作的实现原理是通过判断插入的记录里是否存在主键冲突来决定是插入还是更新,当出现主键冲突时则进行更新操作(使用 ON DUPLICATE KEY UPDATE 语句后面的参数),若无冲突则进行插入操作。-- prepared sql INSERT INTO td_person(id, name, age)  VALUE

    Dec 20, 2018 阅读(518)
    标签: Mysql Java
  • ORA-01843:无效的月份

    Oracle数据库默认情况下,会以DD-MON-YY的形式显示日期,其中DD是天数,MON是月份的前三个字母(大写),而YY是年份的最后两位。数据库实际上会为年份存储4位数字,但是默认情况下只会显示最后两位。一个简单的语句: SELECT TO_DATE('21-MAY-2014') FROM dual;引发ORA-01843:无效的月份!命令行: 分

    Dec 10, 2018 阅读(533)
    标签: Oracle