Эквивалент $ objectToArray с использованием Mongodb Java-драйвера 3 - PullRequest
0 голосов
/ 29 января 2019

Я перемещаю запрос 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"
    }
  }
]

Я перевел вышеприведенное использование API-интерфейса Mongodb Java Driver 3 и получил следующее:

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"))
);

Проблема, с которой я столкнулся, заключается в том, что я не могу найти эквивалент $ objectToArray с использованием драйвера Mongodb Java, а последующие операции sum и min зависят от того, как точка оперирует сгенерированными значениями k и v.от использования $ objectToArray.

Существует ли эквивалентный способ сопоставления объекта с неизвестными именами ключей в формате k и v, используемом $ objectToArray, с использованием драйвера Mongodb Java Driver, предпочтительно версии 3 +?

1 Ответ

0 голосов
/ 29 января 2019

Ниже сделаем.

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