博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MongoDB
阅读量:6673 次
发布时间:2019-06-25

本文共 3406 字,大约阅读时间需要 11 分钟。

使用Nosql Manager for MongoDB 管理工具

1.管理工具 模糊查询 
模糊查询条件包含在 ‘/’之间
2.java 连接MongoDB,条件查询

2.1 连接MongoDB服务,并创建连接数据库对象。

// 连接到 mongodb 服务MongoClient mongoClient = new MongoClient( "127.0.0.1" , 27017 );// 连接到数据库MongoDatabase mongoDatabase = mongoClient.getDatabase("articledb");  System.out.println("Connect to database successfully");MongoCollection
collection = mongoDatabase.getCollection("article");MongoCollection
collection_txt = mongoDatabase.getCollection("article_txt");

2.2 添加查询条件

//模糊查询条件Pattern pattern = Pattern.compile(".*atimo.cn.*", Pattern.CASE_INSENSITIVE);query.put("url", pattern);//对应表字段名MongoCursor
cursor = collection.find(query).skip(0).limit(20).iterator();//添加查询条件分页条件

2.3 遍历查询结果

while (cursor.hasNext()) {Article act = new Article();//查询出的结果转换成jsonObject,然后进行封装或者直接返回给前端处理。我这是封装成对象了JSONObject jsonObject = JSONObject.parseObject( cursor.next().toJson().toString());System.out.println(jsonObject.getString("url"));  act.setTitle(jsonObject.getString("title"));//  act.setUrl(jsonObject.getString("url"));//  unm++;  System.out.println(unm+"--->"+act);  //存入redis    jedis.lpush("sohu",JSON.toJSONString(act));}

从Redis取出,遍历

1         String sohu = jedis.rpop("sohu");2         JSONObject o = (JSONObject) JSONObject.parse(sohu);3         Article article = JSONObject.toJavaObject(o, Article.class);4         System.out.println(article.toString());

从队列单个取出,转换为实体

 2.3 游标超时 解决办法 https://blog.csdn.net/u013066244/article/details/82658912

3.使用管理工具写查询语句(统计数量)

数据示例

/* 1 */{  "_id" : ObjectId("5badab52ad56c95900632572"),  "artId" : "5ba36b831f535ce7e4814859",  "content" : "一看那些细节就知道是245旗舰版",  "comTime" : ISODate("2018-06-09T11:32:38Z"),  "_class" : "com.guoxin.module.article.entity.Comment"}/* 2 */{  "_id" : ObjectId("5badab52ad56c95900632573"),  "artId" : "5ba36b831f535ce7e4814859",  "content" : "他这个是旗舰版的吧(只有旗舰版的座椅才是这个样子的)。旗舰版的动力是180KW,不是小编你说的150KW",  "comTime" : ISODate("2018-06-04T01:16:28Z"),  "_class" : "com.guoxin.module.article.entity.Comment"}/* 3 */{  "_id" : ObjectId("5badab52ad56c95900632574"),  "artId" : "5ba36b831f535ce7e4814859",  "content" : "银行职员往外跑吗?这么自由?",  "comTime" : ISODate("2018-05-29T07:12:09Z"),  "_class" : "com.guoxin.module.article.entity.Comment"}

统计所有artId出现的次数,这里的 artId 字段是另外一个表的主键 id

 db.comment.aggregate([{$group : {_id : "$artId", count : {$sum : 1}}}]) 

查询artId出现的次数统计,comment为数据库名,使用aggregate函数

统计结果为

{ "_id" : "5bc91e3ead56c90b4680814b", "count" : 900 }{ "_id" : "5bb37536ad56c91a9feac8b4", "count" : 1173 }{ "_id" : "5bb36aaaad56c91a9feac8b1", "count" : 1089 }{ "_id" : "5bb36aaaad56c91a9feac8b0", "count" : 1026 }{ "_id" : "5bb3304ead56c91a9feac896", "count" : 589 }{ "_id" : "5bb314e2ad56c91a9feac87e", "count" : 535 }{ "_id" : "5bb3115ead56c91a9feac87c", "count" : 670 }{ "_id" : "5bb3115ead56c91a9feac87b", "count" : 582 }{ "_id" : "5bb30ddaad56c91a9feac87a", "count" : 544 }{ "_id" : "5bb30ddaad56c91a9feac877", "count" : 587 }{ "_id" : "5bb30ddaad56c91a9feac876", "count" : 719 }{ "_id" : "5bb306d2ad56c91a9feac871", "count" : 586 }

统计出每个Id在表中出现的次数。

3.1 扩展 ,查询统计数量在500以上的数据
 db.comment.aggregate([{$group : {_id : "$artId", count : {$sum : 1}}},{$match:{count:{$gt:500}}}]) 
加匹配条件即可。
查询统计数量在200~500之间的
 db.comment.aggregate([{$group : {_id : "$artId", count : {$sum : 1}}},{$match:{count:{$gt:300}}},{$match:{count:{$gt:200}}}]) 
注:artId为统计字段名

转载于:https://www.cnblogs.com/atimo/p/9945727.html

你可能感兴趣的文章
Tomcat服务器集群与负载均衡实现
查看>>
我的友情链接
查看>>
crontab使用进程锁flock解决冲突
查看>>
MySQL 5.6 for Windows 解压缩版配置安装
查看>>
linux使用ntfs-3g 挂载NTFS分区
查看>>
森林、域树、域之间的关系? AD与站点之间的关系?
查看>>
shell脚本中执行时提示“没有那个文件或目录”的解决办法
查看>>
手机/移动前端开发需要注意的20个要点
查看>>
[css]vw
查看>>
性能下降曲线
查看>>
求一个数的二进制中1的个数
查看>>
古代教育观点纵览
查看>>
Linux 下搭建PHP环境(make方法)太麻烦了
查看>>
《三》kubectl命令行管理工具、YAML配置详解
查看>>
iozone测试文件系统性能
查看>>
Hadoop - HDFS的数据流剖析
查看>>
Win7下部署asp.net程序如果有RDLC报表需要以下配置
查看>>
Jhipster_cn中文翻译组
查看>>
Nagios简介与安装(1)
查看>>
centos 本地yum配置
查看>>