mongodb
文章平均质量分 95
山鬼谣me
我的这一生
展开
-
MongoDB 用户权限配置(MacBook Pro篇)
环境MongoDB:4.4.6MacBook Pro前言已经安装好了MongoDB;如何安装MongoDB,可以参考:Macbook pro 安装 MongoDB这篇和以前写的测试数据我们现在假设,创建好了两个数据库:ssm和woos;数据库:ssm |__user 表数据库:woos |__template 表启用权限前,需要先创建管理员用户官方说明:With access control enabled, ensure you have a user wit原创 2021-05-22 23:33:07 · 2849 阅读 · 1 评论 -
为什么 MongoDB 使用 B 树?
我们在这一系列前面的文章曾经分析过 为什么 MySQL 使用 B+ 树,有读者在文章下面留言,希望能出一个为什么 MongoDB 使用 B 树的对比文章,这是一个比较好的问题,MySQL 和 MongoDB 两种不同类型的数据库使用了相似却不同的数据结构,为什么 MySQL 选择使用 B+ 树而 MongoDB 使用 B 树呢?概述MongoDB 是一个通用的、面向文档的分布式数据库[^1],这是官方对 MongoDB 介绍。区别于传统的关系型数据库 MySQL、Oracle 和 SQL Server,转载 2021-02-28 22:44:02 · 750 阅读 · 0 评论 -
MongoDB4.4 新特性
环境window 10mongodb:4.4工具:Robo 3T前言由于现在的公司用的不是mongodb,但是用mongodb用了那么多年;它的变化本人也是时刻关注的;相比以前,可能没有实战了;只能自己demo;本篇是基于mongodb中文官网,总结其自己感觉挺实用的特性;并非揽括官方的所有特性;Hidden Indexes根据名称,我们就知道其作用是隐藏索引,为什么要隐藏索引呢?我们都知道数据库太多索引会导致性能下降。但是业务的复杂性,导致我们是不敢乱删索引的;万一删除了,又得重建索原创 2020-09-26 17:59:55 · 1908 阅读 · 1 评论 -
公司技术分享mongodb讲解
mongdob的介绍官话:MongoDB is a general purpose, document-based, distributed database built for modern application developers and for the cloud era.MongoDB是为现代应用程序开发人员和云时代构建的基于文档的通用分布式数据库。这里我们看到这么几个...原创 2019-11-11 20:42:52 · 902 阅读 · 0 评论 -
mongodb中$nin操作的优化
环境mongodb:3.4 jdk:1.7前言====2018年2月5日=====start=== 看完这个后,建议再看下这篇,因为讲的是一件事情 mongodb 创建局部索引【Partial Indexes】 ====2018年2月5日=====end===今天对一些项目调整包的结构,在沙盒测试时,发现有个接口很慢,查看接口后,发现,条件里面有这么个东东://内容原创 2018-02-02 19:54:07 · 11035 阅读 · 0 评论 -
mongodb中对字符串按照数值来排序【collation】
环境mongodb:3.4 工具:Robo 3T 1.1前言最近在优化索引时,又重新看了下,mongodb的一些新特性; mongodb 3.4 还是提供一些非常好用的新功能; 其中之一就是今天要讲的,对字符串按照数值来排序;collation单纯的字典翻译是整理的意思;但是这里要翻译成:排序规则假设我们有这样的数据:注意 我这里只是为了说明字符串按照数值来排序这个问题,实际情况,股票代码原创 2018-02-05 15:57:29 · 22854 阅读 · 6 评论 -
java 深层次翻页的解决方案
环境jdk:1.7+ 数据库:mongodb:3.4前言最近有个业务,查询的数据量很多,比如我要查询2007-2018年的数据,总共有98万多条数据。 而我公司的交互,又是支持点击最后一页,这样就会造成数据库skip数据量很大,导致查询速度非常慢,大概是10秒到13秒的样子(已经建好了,最优的索引);虽然网上都是建议,不要去查询最后一页的数据,只提供一定范围的数据,但是原创 2018-01-08 11:49:52 · 761 阅读 · 0 评论 -
mongodb 索引优化再优化【前缀大致相同】
环境mongodb:3.4 Robomongo:1.0前言在没有建立索引的情况下,当查询排序请求,并且skip值很大时,就会报如下错误:Sort operation used more than the maximum 33554432 bytes of RAM.意思是说,排序操作不能超过内存32M。解决方式大概2种: 方法一、是把32M的mongodb限制给去掉。db.adminCommand原创 2018-01-03 16:56:23 · 3564 阅读 · 2 评论 -
mongodb3.4驱动包$not的用法
环境mongodb:3.4 java:1.7 mongodb-java驱动包:3.4场景帮产品部的同事导一份数据,为了排除一些无用的数据,需要做一些筛选。 比如:full_name字段(即:员工的名称)不包含:[朝阳,测试,null,mac,a-zA-Z0-9]。在mongodb中打算使用$not进行筛选,mongodb写法只需要:/朝阳,测试,null,mac,a-zA-Z0-9/按照上面那原创 2017-08-08 14:24:25 · 1450 阅读 · 0 评论 -
mongodb dirver for java【读取操作】
环境MongoDB:3.0+ mongodb dirver for java: 3.4 @author:喻涛概要本篇是翻译官网: https://mongodb.github.io/mongo-java-driver/3.4/driver/tutorials/perform-read-operations/讲解的是用java代码对MongoDB进行读操作。Find Operations 查询操原创 2017-06-28 15:29:43 · 2220 阅读 · 0 评论 -
mongodb 创建局部索引【Partial Indexes】
环境mongodb:3.4 工具:Robo 3T1.1前言还是前几天的问题: mongodb中$nin操作的优化今天在调相关接口时,第一次还是慢的出不来,之前我说把$nin换成$gt,但是效果依旧不理想。今天看官网文档时,发现了好东西Partial Indexes。 这个是,mongodb3.2增加的特性。实战先说下我的业务情况。我这个接口需要拿的数原创 2018-02-05 17:31:02 · 1940 阅读 · 0 评论 -
The field 'key' must be an object, but got undefined
环境mongodb:3.4 工具:robo 3T 1.1前言再给一张表创建局部索引时,报错了:/* 1 */{ "raw" : { "shard4/10.19.139.216:27048,10.19.30.210:27048" : { "ok" : 0.0, "errmsg" : "The field原创 2018-02-05 22:29:48 · 3526 阅读 · 0 评论 -
mongodb 索引的优先问题
环境mongodb:3.4 工具:robo 3t 1.1前言今天因为研究了局部索引partial Index,所以就想优化下,以前创建过的索引!比如我打算创建如下索引来,更好的满足业务:db.userop_record.createIndex({user_type:1, createtime:-1, type:1, code:1,status:1},{partialFi原创 2018-02-05 23:02:15 · 1455 阅读 · 0 评论 -
java 集合取交集注意事项
环境java:1.7 mongodb:3.4场景昨晚因为retainAll()方法被搞了很久,我知道是取交集。只是公司封装的jar不提示,导致浪费了很多时间。下面程序模拟这个过程://测试数据Integer aa = 10;Long cc = 10L;//模拟公司jar包封装的过程List<Integer> aList = new ArrayLis...原创 2018-03-30 10:17:57 · 1178 阅读 · 0 评论 -
mongodb模糊查询【java写法】
环境java:1.7 mongodb:3.4前言本篇记录模糊查询的java写法; 以下的例子是,以不区分大小写进行模糊匹配为例!连接数据库//连接数据库 startMongoCredential credential = MongoCredential.createCredential("user", "user", "user".toCharArray())...原创 2018-04-10 10:34:15 · 2980 阅读 · 1 评论 -
mongodb 聚合 组内排序
环境mongodb:3.4 java: 1.7前言今天遇到的需求,使得我需要在聚合分组中的组内进行排序。网上搜索了一番,mongodb并没有组内排序的关键字。好像sql有; 瞬间对mongodb有点失望。 后来仔细想想,虽然数据库层面没有具体关键字去实现,但是,我们可以在写管道时,控制好顺序是可以实现组内排序的;数据假设我们现在有下面这样的数据:每个奖...原创 2018-04-11 16:30:50 · 15216 阅读 · 5 评论 -
MongoDB java 更新时间戳Timestamp
环境mongodb:3.4 java:1.7前言最近,因为业务需要,需要将mongodb数据同步sql那边,而我公司的同步程序,需要用到mongodb自带的时间戳字段。格式如下:Timestamp(1524117776, 3698)由于历史原因,我公司的历史数据,是没有时间戳字段的,所以需要刷出来! 需要刷出类似如下的结构:"_tm" : Timesta...原创 2018-04-19 14:30:42 · 10018 阅读 · 0 评论 -
mongodb游标错误:com.mongodb.MongoCursorNotFoundException: Query failed with error code -5
环境mongodb:3.4.15 java:1.7场景对用户日志表补加时间戳的字段;具体代码如下:public static void main(String[] args) { final MongoCollection<Document> useropRecord; //连接数据库 start MongoCred...原创 2018-09-12 11:37:21 · 10085 阅读 · 0 评论 -
Macbook pro 安装 MongoDB
环境MongoDB 4.2机器:Macbook Pro下载https://www.mongodb.com/download-center/enterprise我下载下来是个.tgz的包解压tar -zxvf mongodb-macos-x86_64-enterprise-4.2.0.tgz解压后会得到mongodb-macos-x86_64-enterprise-4.2.0文件夹...原创 2019-09-19 17:00:46 · 2265 阅读 · 0 评论 -
mongodb dirver for java【Text Search】
环境MongoDB:3+ mongodb dirver for java:3.4概要text search支持某个字段内容进行查询。比如:字段content字段记录的是本章的内容。现在想要查询这篇文章的内容是否有中国这个字符串,这时就要用到text search。本篇讲的是在java中如何使用。之后我还会讲解MongoDB中本身的语法。以下翻译之官网: https://mongodb.githu原创 2017-06-28 11:00:29 · 986 阅读 · 0 评论 -
mongodb3.4 Document Validation【文档验证】
环境mongodb:3.4该功能是从mongodb版本 3.2开始支持的.@author 喻涛概述本篇由本人翻译官方文档: https://docs.mongodb.com/manual/core/document-validation/Mongodb提供了在插入和更新时验证文档的功能.验证规则是对每个基础集合使用validator选项来指定的.该验证器选项是给文件指定验证规则和表达式. 可以原创 2017-06-27 16:30:57 · 5241 阅读 · 0 评论 -
mongodb2升级到mongodb3.4思路
环境mongodb库:2.4、2.6 驱动包: mongodb-driver-2.11.3.jarmongodb-driver-3.4.2.jar bson-3.4.2.jar mongodb-driver-core-3.4.2.jar情形使用mongodb驱动包为2.11的写法: DBCollection collection = db.getCollection("gg_modul原创 2017-06-22 15:38:07 · 5755 阅读 · 2 评论 -
mongodb重命名方法
需求今天创建了一个集合之后,想改名字;一般做法:我们可以先删除,再创建一个新的。 后来发现原来mongodb提供了现成的方法。方法db.collection.renameCollection()重命名一个集合实战db.createCollection("abd");重命名:db.adc.renameCollection("新名字")官方文档: http://docs.mongoing.com/m原创 2016-12-27 18:51:17 · 6912 阅读 · 0 评论 -
mongodb用户权限管理配置
环境mongodb 3.4 window7MongoDB常用命令[root@snails ~]# ps -ef|grep mongod[root@snails ~]# mongo --host=127.0.0.1 --port=27017MongoDB shell version: 3.2.7connecting to: 127.0.0.1:27017/test> show dbs #显示原创 2016-12-25 22:04:04 · 34622 阅读 · 7 评论 -
mongodb聚合利用日期分组。
$dayOfYear: 返回该日期是这一年的第几天。(全年366天)$dayOfMonth: 返回该日期是这一个月的第几天。(1到31)$dayOfWeek: 返回的是这个周的星期几。(1:星期日,7:星期六)$year: 返回该日期的年份部分$month: 返回该日期的月份部分(between 1 and 12.)$week: 返回该日期是所在年的第几个星期(between 0 and原创 2016-12-23 17:58:32 · 16637 阅读 · 0 评论 -
mongodb 关闭连接的注意细节
最近一个API部署到正式环境后,总是过几天后,就报错误:java.lang.IllegalStateException: this Mongo has been closed\n\tat com.mongodb.DBTCPConnector._checkClosed(DBTCPConnector.java:95)\n\tat com.mongodb.DBTCPConnector.innerCall(原创 2016-11-17 19:42:38 · 22768 阅读 · 1 评论 -
mongodb建索引的策略
该如何建立有效索引现在有这么一个查询条件,数据库里的数据总量是60087条数据:db.t_f10_company_executives_01.find({symbol:"000002",status:1}).sort({fce1_03:-1})如果不建立索引的话,需要1.6s左右时间。后来我建立如下索引:db.t_f10_company_executives_01.ensureIndex({fce原创 2016-10-21 09:44:39 · 734 阅读 · 0 评论 -
mongodb中$regex的用法
官网地址:https://docs.mongodb.com/manual/reference/operator/query/regex/#regex-case-insensitive举个例子来说:现在有以下集合(官网的例子):{ "_id" : 100, "sku" : "abc123", "description" : "Single line description." }{ "_id" :原创 2016-05-24 16:44:55 · 26562 阅读 · 1 评论 -
用递归算法得到Java的树形结构
要求:得到无限分类的菜单栏。并且告诉你任何一个节点,都能得到整个菜单。数据库是mongodb。没有贴全部,只贴部分。 首先一个整体思路是: 1、要有一个能通过父类id得到全部子类id的集合。 2、遍历这些子类集合来把它们的关系关联起来。代码部分: 建立数据库的查询:DBCollection collection = GGMongoOperator.getGGBusinessCollectio原创 2016-07-08 18:14:12 · 12003 阅读 · 0 评论 -
mongodb的导入导出、复制表
有时候我们需要对mongodb的表进行复制,而他的复制表又没有MySQL那样方便。 它的复制得用到导入导出。 可以参考: http://www.360doc.com/content/15/1013/12/26211242_505316855.shtml原创 2016-06-06 09:33:26 · 948 阅读 · 0 评论 -
mongodb保存数据时,字段名带点号时保存会以子文档的形式保存
例子我要保存这样的数据:{ "date" : { "$date" : "2016-10-09T16:00:00.000Z"} , "createtime" : { "$date" : "2016-12-27T09:36:13.305Z"} , "status" : 1 , "registry_sum" : 114 , "Go-Goal新一代V3.0" : 2 , "Go-Goal新一代V3.原创 2016-12-29 18:30:00 · 2748 阅读 · 0 评论 -
mongodb优化细节
情形今天发现,一个页面打开的速度很慢。去看看mongodb库数据结构如下:可以从图中可以看出,里面有很多数组,这种大量的数组,即使是一个普普通通的查询db.user_sum.find()都需要52秒,后来查询资料,原来如果集合里有大量的内嵌文档,数组,都是会拖慢速度的。我的这种情况是后台代码是这么查询的: BasicDBObject query = new BasicDBObject(原创 2017-01-06 16:42:23 · 444 阅读 · 0 评论 -
mongodb dirver for java【聚合】
环境MongoDB:3.+ mongodb dirver for Java: 3.+ @author:喻涛概要本篇是翻译官网: https://mongodb.github.io/mongo-java-driver/3.4/driver/tutorials/aggregation/讲解的是用java代码对MongoDB进行聚合操作。Aggregation Framework聚合管道是数据聚原创 2017-06-28 18:24:59 · 954 阅读 · 0 评论 -
mongodb dirver for java【写入操作】
环境MongoDB:3.+ mongodb dirver for Java: 3.+ @author:喻涛概要本篇是翻译官网: https://mongodb.github.io/mongo-java-driver/3.4/driver/tutorials/perform-write-operations/讲解的是用java代码对MongoDB进行写入操作。写入操作(插入、更新、替换、删除原创 2017-06-28 17:25:34 · 1884 阅读 · 0 评论 -
java连接mongodb3.4
环境操作系统:window7 mongodb:3.4 IDE:eclipse Neon.1 Release RC3 (4.6.1RC3)连接代码错误代码/** * 拿数据库的连接 * @param collection * @return */ public static MongoDatabase getDateBase(String db){原创 2017-03-28 19:50:56 · 9355 阅读 · 2 评论 -
mongodb用户权限修改,删除以及robomongo显示问题
环境mongodb:3.4 robomongo:1.0.RC1需求之前我介绍过,mongodb用户权限管理配置,之后我自己有个这样的想法,能不能像MySQL客户端那样,一次可以显示多个数据库?如图: 而robomongo客户端如图: 刚开始我以为,我只需要给yutao这个账号,再授予其他数据库的权限,就ok.创建数据库mongodb是没有创建数据库的命令的,一般是这么做:# 使用use命令切换原创 2017-02-26 22:21:29 · 16735 阅读 · 1 评论 -
mongodb查询计划(explain)分析
环境mongodb:3.4 robomongo:1.0.RC1explain 返回的数据执行的语句:db.urlcontents.find({ir_urltitle:{$regex:"科技"}, ir_groupname:"产业热点" }).sort({ir_urltime:-1}).explain("queryPlanner")结果为:{ "cursor" : "BtreeCursor原创 2017-03-01 16:38:05 · 4185 阅读 · 0 评论 -
mongodb3.4的安装和配置
下载去官网下载:http://www.mongodb.org/downloads由于是在window下,所以我下载的是msi格式,傻瓜式安装。安装这个和普通安装软件exe一样,一直点下一步,中途改改安装路径 以下是我安装的版本mongodb-win32-x86_64-2008plus-ssl-3.4.1-signed.msi配置安装之后,还需要配置,比如数据库的数据安装路径,日志路径等等创建数据目原创 2016-12-23 14:11:24 · 17302 阅读 · 7 评论 -
mongodb聚合中$group的联合主键写法
环境mongodb 2.6 window7 RoboMongodb需求今天写联合主键了时,发现有两种写法,特此记录下:写法一、用数组db.gg_report_down_read.aggregate([{$match:{ "status" : 1 , "account_name" : "F00015170" , "org_name" : { "$regex" : "熙玥投资"}}},原创 2017-01-16 13:54:53 · 6611 阅读 · 0 评论 -
mongodb关联查询----js
说明只是记录下,做个笔记。集合有两个集合:gg_mfratio,stock。gg_mfratio集合数据:stock集合数据: 其中:db.gg_mfratio.find({"reportdate" : ISODate("2016-12-31T00:00:00.000+08:00")})执行后是总共36条数据。 也就是说我想验证这36条数据是否都关联到stock中。可以执行下面这条语句:db.g原创 2017-02-04 15:17:53 · 2617 阅读 · 0 评论