【问题标题】:Equivalent of $objectToArray using Mongodb java driver 3使用 Mongodb java driver 3 的 $objectToArray 等价物
【发布时间】:2019-01-29 00:13:01
【问题描述】:

我正在将 Mongodb 查询从 Javascript 移动到 Java。对象格式如下:

{
  "record": {
    "unknownName1": {
      "count": 5,
      "domain": "domain1"
    }, {
    ...
    }, {
    "unknownNameN": {
      "count": 3,
      "domain": "domainN"
    }
  }
}

Javascript 查询包含以下部分:

[
  { 
    $project: {
      record: { 
        $objectToArray: "$record" 
      }
    }
  }, {
    $unwind: { "$record"
  }, {
    $group: {
      device: "$record.k"
    }, 
    count: {
      $sum: "$record.v.count"
    },
    domain: {
      $min: "$record.v.domain"
    }
  }
]

我已将以上内容翻译为使用 Mongodb Java Driver 3 api,并具有以下内容:

List<Bson> query = Arrays.asList(
    project(include("record")),
    unwind("$record"),
    group(computed("device", "$record.k"),
        sum("count", "$record.v.count"),
        min("domain", "$record.v.domain"))
);

我遇到的问题是我似乎无法使用 Mongodb Java 驱动程序找到与 $objectToArray 等效的对象,并且随后的 sum 和 min 操作依赖于 dot 操作使用 $objectToArray 生成的 k 和 v 值。

是否有一种等效的方法可以使用 Mongodb Java 驱动程序将具有未知键名的对象映射到 $objectToArray 使用的 k 和 v 格式,最好是版本 3+?

【问题讨论】:

    标签: java mongodb mongodb-java


    【解决方案1】:

    下面就可以了。

    project(computed("record", eq("$objectToArray", "$record")))
    

    【讨论】:

      猜你喜欢
      • 2021-09-26
      • 2020-12-22
      • 2011-04-17
      • 2019-03-02
      • 2019-02-19
      • 2016-05-13
      • 2012-06-03
      • 2013-01-15
      • 1970-01-01
      相关资源
      最近更新 更多