精华内容
下载资源
问答
  • } 解决方案 You cannot access nested objects by using "." in Java driver. You have to get DBObject for each nested json object. Following code should solve problem. for (DBObject result : output....

    {

    "serverUsed" : "localhost/127.0.0.1:27017",

    "result" : [{

    "_id" : {

    "$oid" : "529f131430044109e30fc6f9"

    },

    "html" : {

    "table" : {

    "tbody" : {

    "Barge" : {

    "Name" : "ANTVERPIA 56",

    "Bargeno" : 6003696,

    "Harbour" : "HH",

    "Reportedpresent" : " ",

    "Starting" : "06-12-2013  spil 2"

    }

    }

    }

    }

    }]

    }

    I have this as result, how can i get string value of Name. In this case ANTVERPIA 56.

    I have tried with this following code but it does not working, please help.

    for (DBObject result1: output.results()){

    String name1 = (String)result1.get("html.table.tbody.Barge.Name");

    System.out.println(name1);

    }

    解决方案

    You cannot access nested objects by using "." in Java driver. You have to get DBObject for each nested json object. Following code should solve problem.

    for (DBObject result : output.results()) {

    DBObject htmlObj = (DBObject) result.get("html");

    DBObject tableObj = (DBObject) htmlObj.get("table");

    DBObject tbodyObj = (DBObject) tableObj.get("tbody");

    DBObject bargeObj = (DBObject) tbodyObj.get("Barge");

    String name = (String) bargeObj.get("Name");

    }

    展开全文
  • Java中使用mongodb的aggregate聚合查询

    万次阅读 2017-10-12 18:30:19
    首先,我们在数据库中,mongodb聚合查询是这样写。 db.getCollection('parking_record').aggregate( {$match : {"appId" : "2e1800b22ae70600", "leaveTime" : {"$gt" : ISODate("2017-07-12T00:00:00"), "$lt

    首先,我们在数据库中,mongodb的聚合查询是这样写。

    db.getCollection('parking_record').aggregate(
            {$match : {"appId" : "2e1800b22ae70600", "leaveTime" : {"$gt" : ISODate("2017-07-12T00:00:00"), "$lt" : ISODate("2017-07-13T00:00:00")}}},
            {$group : {"_id" : "$leaveMethod", "count" : {$sum : 1}}},
            {$sort : {"_id" : 1}}
        )

    在java类中,应该怎样呢?这是我写的其中一个方法。

    (首先要导入mongodb的java驱动包mongo-java-driver-3.2.2.jar)

    /**
    	 * 根据日期统计离场方式
    	 * @param app_id 插件ID
    	 * @param beginDate 开始日期
    	 * @param endDate 结束日期
    	 * @return {"ManualLeave":2,"AutoLeave":4}
    	 * @throws Exception
    	 */
    	public String aggregateLeaveMethodByDate(String app_id, Date beginDate, Date endDate) throws Exception {
    		MongoCollection<Document> collection = PluginMongo.instance().getDatabase().getCollection(MongoCollectionName.PARKING_RECORD);
    		Document sub_match = new Document();
    		sub_match.put("appId", app_id);
    		sub_match.put("leaveTime", new Document("$gt", beginDate).append("$lt", endDate));
    		
    		Document sub_group = new Document();
    		sub_group.put("_id", "$leaveMethod");
    		sub_group.put("count", new Document("$sum", 1));
    		
    		Document match = new Document("$match", sub_match);
    		Document group = new Document("$group", sub_group);
    		Document sort = new Document("$sort", new Document("_id", 1));
    		
    		List<Document> aggregateList = new ArrayList<Document>();
    		aggregateList.add(match);
    		aggregateList.add(group);
    		aggregateList.add(sort);
    		
    		JSONObject ret_obj = new JSONObject();
    		AggregateIterable<Document> resultset = collection.aggregate(aggregateList);
    		MongoCursor<Document> cursor = resultset.iterator();
    		
    		try {
    			while(cursor.hasNext()) {
    				Document item_doc = cursor.next();
    				int leaveMethod = item_doc.getInteger("_id", 0);
    				int count = item_doc.getInteger("count", 0);
    				
    				LeaveMethodEnum leaveMethodVal = LeaveMethodEnum.fromType(leaveMethod);
    				ret_obj.put(leaveMethodVal.name(), count);
    			}
    		} finally {
    			cursor.close();
    		}
    		
    		return ret_obj.toJSONString();
    	}
    上面的只有matche,group等几个常用,project,limit等类似,可以参考上面的。

    aggregate的相关sql知识可以参考菜鸟教程:http://www.runoob.com/mongodb/mongodb-aggregate.html

    展开全文
  • 二、DBObject接着上一篇JAVA - mongodb 聚合查询方式二进行扩展DBObject match = (DBObject) JSON.parse("{$match:{'status':{$in:['0','1']},type:{$ne:11},'time':{$gte:'"+beginDay+"',$lte:'&...

    二、DBObject

    接着上一篇JAVA - mongodb 聚合查询方式二进行扩展
    DBObject match = (DBObject) JSON.parse("{$match:{'status':{$in:['0','1']},type:{$ne:11},'time':{$gte:'"+beginDay+"',$lte:'"+endDay+"'}}}");
    //status 为0或者为1 ; type 不为11;time在beginDay ~ endDay时间段内
    DBObject group = (DBObject) JSON.parse("{$group:{_id:'$userId', count:{$sum:1},lastTime:{$max:'$time'} }}");
    //以用户Id分组,统计查询次数,取最后一次time的时间
    DBObject groupMatch = (DBObject) JSON.parse("{$match:{count:{$gte:100}}}");
    //在上一步统计出的结果中筛选次数大于100的数据
    DBObject project = (DBObject) JSON.parse("{$project:{_id:1,count:1,lastSuccTime:1}}");
    //$project----查询结果中需要显示哪些字段,显示则设置为1。如下需要不显示_id 域(字段),则需如下指定:
    //db.集合名.aggregate( [ { $project : { _id: 0, count: 1 , lastSuccTime: 1 } } ] )
    DBObject sort = (DBObject) JSON.parse("{$sort:{'count':-1}}");//排序
    List<DBObject> list = new ArrayList<DBObject>();
    list.add(match);
    list.add(group);
    list.add(groupMatch);
    list.add(project);
    list.add(sort);
    AggregationOutput catchOutPut = mongoTemplate.getCollection("表名").aggregate(list);//查询结果



    展开全文
  • 主要介绍了JAVA mongodb 聚合几种查询方式详解,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
  • 二、DBObject不多说,如果大家觉得上一篇文章特别长篇大论,那么下面我给大家带来一种代码更简洁的聚合查询:直接上代码吧。1.注意导入的包:import com.mongodb.DBObject; import com.mongodb.util.JSON; 2.$macth:...

    二、DBObject

    不多说,如果大家觉得上一篇文章特别长篇大论,那么下面我给大家带来一种代码更简洁的聚合查询:

    直接上代码吧。

    1.注意导入的包:

    import com.mongodb.DBObject;
    import com.mongodb.util.JSON;
    

    2.$macth:  (beginDay-查询开始日期;endDay-查询结束日期)

    DBObject match = (DBObject) JSON.parse("{$match:{'status':'1','time':{$gte:'"+beginDay+"',$lte:'"+endDay+"'}}}");

    3.$group:(以userId分组,统计用户数量,累加amout字段值,取amout字段最大值)

    DBObject group = (DBObject) JSON.parse("{$group:{_id:'$userId', count:{$sum:1},total:{$sum:'$amount'},maxSigle:{$max:'$amount'}}}");

     条件拼接完,开始查询:

    List<DBObject> list = new ArrayList<DBObject>();
    list.add(match);
    list.add(group);
    AggregationOutput Output = mongoTemplate.getCollection("表名").aggregate(list);

    遍历结果就不用在说了,遍历在JAVA - mongodb 聚合查询方式一

    是不是比一种方式简单多了。但是也要考验自身对mongodb语句熟悉性


    展开全文
  • JAVA - mongodb 聚合查询方式一

    千次阅读 2018-03-26 11:05:27
    一、BasicDBObject整个聚合查询是统计用户的各种状态下的用户数量为场景:1.筛选条件: date为查询日期:BasicDBObject Query = new BasicDBObject(); Query.put("time",new BasicDBObject("$gte&...
  • 三、BasicDBObject+脚本语句java代码实现:BasicDBObject groupIndex = new BasicDBObject(); BasicDBObject distinctQuery = new BasicDBObject(); distinctQuery.put("userId", new BasicDBObject("...
  • 通过aggregation进行分组查询,有时候需要统计查询记录总条数假设分组字段为day。如果查询函数写为: { $group: { _id: "day", count: { $sum: 1 } } } 那么查询出来的数量为记录条数,结果如图所示: ...
  • 训练大纲MongoDb1大家...第145次(MongoDb3)学习主题:MongoDb3学习目标:掌握mongodb正则查询掌握mongodb聚合查询掌握mongodb管道操作掌握mongodb字符串操作掌握mongodb算术运算掌握mongodb日期处理Java连接MongoDB...
  • java mongodb多条件聚合查询

    千次阅读 2018-07-21 12:08:54
    查询符合 :1、大于且小于时间 2、按atype2字段筛选 3、按人数字段求和 4、按省字段聚合 下面代码,可以直接拿来用。 public List&lt;DBObject&gt; deathnumberByProvince(String startDate, String ...
  • MongoDB 的文档操作-MongoDB 聚合查询1.求和 - $sum2.条件筛选 - $match3.最大值 - $max4.最小值 - $min5.平均值 - $avg6.统计结果返回数组 - $push7.数组字段拆分 - $unwind8.管道操作8.1 $project-聚合投影约束8.2...
  • 1.聚合操作Aggregation介绍  Aggregation简单来说,就是提供数据统计、分析、分类的方法,这与mapreduce有异曲同工之处,只不过mongodb做了更多的封装与优化,让数据操作更加便捷和易用。Aggregation操作,接收...
  • 上一篇文章介绍了,如何在本地使用MongoDB终端做一些基本的增删改查,以及一些递归查询,或者导入导出数据为excel的操作,那么今天我们来说说如何使用Java程序来操作MongoDB数据库,因为我们平时都是直接操作Java...
  • MongoDB 聚合查询

    2021-07-10 06:10:32
    什么是 MongoDB 聚合框架 MongoDB 聚合框架(Aggregation Framework)是一个计算框架,它...从效果而言,聚合框架相当于 SQL 查询中的: GROUP BY LEFT OUTER JOIN AS等 管道(Pipeline)和步骤(Stage) 整个聚合...
  • MongoDB学习之Java操作MongoDB MongoDB Java Driver3.X 首先,我们的先开启mongodb服务,以及创建需要连接的数据库,以及连接的用户。 创建数据库:https://blog.csdn.net/lwx356481/article/details/82215723 ...
  • 最近因为项目需要,用到了MongoDB,之前只用过关系型数据库,第一次项目中用到,有一点点心得和收获,记录一下。...因为本次业务原因,做的都是查询操作,没有增删改等操作。(比较简单,看下就会了,哈哈) SQL...
  • 不知道为啥网上关于java mongo的分组聚合查询都不多,让我等小白无从下手啊,两个接口搞不明白了,丢人啊,接上篇文章多数据源查询,这里主要使用的Aggregation类,这个好像是MongoDB聚合查询用的?我看网上具体...
  • 找了很久查询objectid的方法都是错的,用mongovue能查询出来,但就是用java不知道怎么查询 1.mongovue里的查询方式: 复制代码 代码如下: {"_id" : ObjectId("5326bfc0e6f780b21635248f")} 2.纯mongodb里的查询...
  • mongodb聚合查询

    2020-12-15 17:02:42
    聚合查询 import java.math.BigDecimal; import java.util.List; import java.util.Map; import java.util.Objects; import java.util.stream.Collectors; import javax.annotation.Resource; import org.apache....
  • MongoDb聚合查询

    2018-11-23 15:59:56
    查看某一storeId下的登陆信息没问题,但是当需要将loginDate作为条件筛选时,只要某个storeId下有一条满足记录,那么该storeId下所有记录都会好被查询出来,无奈只能通过聚合查询的方式将storeId下的数据拆分开来...
  • 一、BasicDBObject整个聚合查询是统计用户的各种状态下的用户数量为场景:1.筛选条件: date为查询日期:BasicDBObject Query = new BasicDBObject(); Query.put("time",new BasicDBObject("$gte&...
  • java-mongojdbc3.x中聚合管道功能使用的问题及解决 参数类别 在3.x版本中,aggregate()方法要求传入的参数和前面的版本不同,是List,即是一个元素为bson子类对象的list,因为前面也用JavaMongoDB进行了一些简单...
  • mongodb高级聚合查询

    千次阅读 2019-05-18 22:08:25
    在工作中会经常遇到一些mongodb聚合操作,特此总结下。mongo存储的可以是复杂类型,比如数组、对象等mysql不善于处理的文档型结构,并且聚合的操作也比mysql复杂很多。 注:本文基于 mongodb v3.6 目录 mongo与...
  • MongoDB聚合查询示例

    千次阅读 2018-04-11 14:56:29
    MongoDB聚合查询示例目的:统计book_order表的每个用户的order总数(total),以及失效的数量(invalid)查询用户的信息DBRef(java代码中有查询,使用DBRef查询mongodb语法示例:aggregate会一层一层查询db.book_...
  • 在上次的 基于java程序的mongodb随机查询的一个解决方案(一) 之后,又发现一种方法,在此记录 mongoTemplate Aggregation 使用聚合查询提供的抽样方法来做随机查询,没有做性能测试。速度应该可以 package ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 10,348
精华内容 4,139
关键字:

java聚合查询mongodb

java 订阅