【问题标题】:MongoDB aggregate query to java codeMongoDB聚合查询到java代码
【发布时间】:2017-06-13 06:02:49
【问题描述】:

我正在尝试将 mongoDB 查询转换为 Javacode,但它在 mongo 中返回了正确的值,但是在 java 代码中运行时它没有返回正确的计数值(它返回正确的 machineID、errorID 但计数为 null,而不是count 应该返回记录数)。

Mongo 驱动程序名称

mongo-java-driver-3.3.0.jar

MongoDB 查询

 db.getCollection('collectionName').aggregate([
    {"$match" : {"machineID": {"$in": ["1","10"]} , "errorID" : "error5"}},
    {"$group" : {_id : {machineID : "$machineID", errorID : "$errorID"}, count : {$sum  : 1} } },
    {$project : {machineID : "$_id.machineID", errorID : "$_id.errorID", count : "$count", _id : 0}}
])

Java代码:

AggregateIterable<Document> resultset =dbCollection.aggregate(Arrays.asList(
                new Document("$group", new Document("_id", new BasicDBObject("machineID", "$machineID").append("errorID","$errorID").append("count", new BasicDBObject("$sum",1)))),
                new Document("$project", new Document("machineID", "$_id.machineID").append("errorID", "$_id.errorID").append("count", "$count").append("_id", 0))));

返回值

machine ID -> 100
errorID  -> error3
count  -> null

【问题讨论】:

  • 您认为提供的答案中是否有某些内容无法解决您的问题?如果是这样,那么请对答案发表评论,以澄清究竟需要解决哪些尚未解决的问题。如果它确实回答了您提出的问题,请注意Accept your Answers您提出的问题。

标签: java mongodb aggregation-framework


【解决方案1】:

如果您尝试在 JSON 格式示例中保持相同的结构,这会有所帮助:

AggregateIterable<Document> resultset =dbCollection.aggregate(Arrays.asList(
  new Document("$match",
    new Document("machineID", new Document("$in", Arrays.asList("1","10")))
      .append("errorID", "error5")
  ),

  new Document("$group", 
    new Document("_id", 
      new Document("machineID", "$machineID").append("errorID","$errorID")
    ).append("count", new Document("$sum",1))
  ),

  new Document("$project", 
    new Document("machineID", "$_id.machineID")
      .append("errorID", "$_id.errorID")
      .append("count", "$count")
      .append("_id", 0)
  )
));

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-27
    相关资源
    最近更新 更多