Построение базы данных средней скорости из двух камер с использованием облачных записей - PullRequest
0 голосов
/ 08 мая 2019

Я очень новичок в 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?

Любая помощь по этому вопросу была бы великолепна!

1 Ответ

2 голосов
/ 15 мая 2019

Если вы хотите экстрагировать документы, где 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)
}

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

...