Построение базы данных средней скорости с двух камер с использованием облачных записей

Я новичок в IBM Cloud и, в частности, в Cloudant DB. В этой базе данных есть записи о том, когда автомобили проезжают мимо двух разных камер контроля скорости (либо 20, либо 21). У меня есть база данных объектов javascript в следующем формате:

{
  "_id": "006994989f0914a7fb1ca44fae00fe75",
  "_rev": "1-e9b9afcb45f6ff703825d4be6d331f73",
  "payload": {
    "license_plate": "GNX834",
    "camera_id": 20,
    "date_time_string": "2019-05-08T15:20:04.134Z",
    "date_time_UTC_milliseconds": 1557328804134
  },
  "qos": 2,
  "retain": false
}

Я хочу создать функцию индекса поиска, чтобы создать еще одну базу данных, полную объектов, содержащих среднюю скорость автомобилей, когда они движутся между двумя камерами (они находятся на расстоянии 3 миль друг от друга). Я знаю, что мне нужно отсортировать их по номерным знакам, но я не могу понять, как это сделать в Cloudant DB?

Любая помощь по этому вопросу будет здорово!


person Jenkins    schedule 08.05.2019    source источник


Ответы (1)


Если вы хотите добавить документы, в которых licence_plate равно известному вам значению, вам необходимо создать индексировать это поле:

POST /db/_index HTTP/1.1
Content-Type: application/json

{
  "index": {
    "fields": ["payload.license_plate"]
  },
  "name" : "plate-index",
  "type" : "json"
}

Затем вы можете запросить номерной знак:

POST /db/_find HTTP/1.1
Content-Type: application/json

{
  "selector": {
    "payload.license_plate": "NH67992"
  }
}

который вернет вам соответствующие документы.

В качестве альтернативы, если вы хотите извлечь данные массово, упорядоченные по полю номерного знака, вы можете создать MapReduce View с номерным знаком в качестве ключа (функция карты ниже):

function(doc) {
  emit(doc.payload.license_plate, doc.payload.date_time_string)
}

Индекс, создаваемый этой функцией карты, упорядочен по номерному знаку и используется для извлечения данных в порядке номерного знака.

person Glynn Bird    schedule 15.05.2019