couchbase просмотр группы запросов по частям ключа - PullRequest
0 голосов
/ 25 июня 2018

У меня есть некоторые данные, которые содержат сообщения, в том числе:

mac
version
source
timestamp

Я хочу знать, сколько устройств было на какой версии на прошлой неделе.Например,

version 1.0: 20
version 2.1: 45
version 3.4: 3198

Скажем, мое мнение таково:

map: function (doc, meta) {
  emit([doc.timestamp, doc.source, doc.mac, doc.version], 1);
}

Как бы я сгруппировал по mac и версии?

Я могу использовать метку времени, чтобыконтролировать диапазон сообщений, на которые я смотрю.Но проблема в том, что меня волнует только количество устройств, а не количество сообщений.Группа, включающая отметку времени, включает каждое сообщение от устройств, но меня интересует только количество устройств и их версия, а не количество сообщений.

1 Ответ

0 голосов
/ 26 июня 2018

Я далеко не эксперт по M / R, но сработает ли это:

function (doc, meta) {
  emit([doc.version, doc.timestamp, doc.source, doc.mac], 1);
}

Для начального ключа: ["0","2018-05-06"] Для конечного ключа: ["Z","2018-05-13"]

Это означает, что каждыйдокумент с версией от 0 до Z (которая должна быть всем) и каждый документ с отметкой времени между двумя указанными датами.

Для group_level: 1 (группировка по версии)

Для уменьшения используйте встроенный _count

Я проверил это с 4 документами (2 в версии 1.0 и 2 в версии 2.1), и это, похоже, сработало:

enter image description here

...