Как найти документ из CouchDB на основе свойств других документов в одном запросе? - PullRequest
0 голосов
/ 29 декабря 2018

Уже существует база данных CouchDB, которая была создана на основе существующих записей из базы данных MySQL.

У меня есть такой набор документов:

[
    {
        "_id": "lf_event_users_1247537_11434",
        "_rev": "1-19e90d3f19e9da7cc5adab44ebbe3894",
        "TS_create": "2018-12-17T10:29:20",
        "emm_id": 204662,
        "eu_user_id": 201848611,
        "type": "lf_event_users",
        "uid": 1247537,
        "vendor_id": 11434
    },
    {
        "_id": "lf_event_users_1247538_11434",
        "_rev": "1-0d0d1e9f1fb5aad9bafd4c53a6cada17",
        "TS_create": "2018-12-17T10:29:20",
        "emm_id": 204661,
        "eu_user_id": 201848611,
        "type": "lf_event_users",
        "uid": 1247538,
        "vendor_id": 11434
    },
    {
        "_id": "lf_event_users_1247539_11434",
        "_rev": "1-09bc2bfc709ee9c6e6cac9cb34964ac4",
        "TS_create": "2018-12-17T10:29:20",
        "emm_id": 204660,
        "eu_user_id": 201848611,
        "type": "lf_event_users",
        "uid": 1247539,
        "vendor_id": 11434
    }
]

Как вы можете видетьвсе они предназначены для одного и того же "eu_user_id" = 201848611, и у каждого из них свой "emm_id".

Теперь у меня есть другой набор документов, подобный этому, в той же базе данных CouchDB:

[
    {
        "_id": "lf_event_management_master_204660_11434",
        "_rev": "2-320111a3814a3efd6838baa0fb5412bb",
        "emm_disabled": "n",
        "emm_title": "Scanned for local delivery",
        "settings": {
            "event_view": "ScannedForLocalDeliveryEvent",
            "sort_weight": 0
        },
        "type": "lf_event_management_master",
        "uid": 204660,
        "vendor_id": 11434
    },
    {
        "_id": "lf_event_management_master_204661_11434",
        "_rev": "2-e6d6ebbd4dc4ca473a376d3d16a58e93",
        "emm_disabled": "n",
        "emm_title": "Local Delivery Cancelled",
        "settings": {
            "event_view": "CancelDeliveryEvent",
            "sort_weight": 4
        },
        "type": "lf_event_management_master",
        "uid": 204661,
        "vendor_id": 11434
    },
    {
        "_id": "lf_event_management_master_204662_11434",
        "_rev": "2-53cb3d3eba80704e87ea5ff8d5c269df",
        "emm_disabled": "n",
        "emm_title": "Local Delivery Exception",
        "settings": {
            "event_view": "DeliveryExceptionEvent",
            "sort_weight": 3
        },
        "type": "lf_event_management_master",
        "uid": 204662,
        "vendor_id": 11434
    }
]

Как видите, у каждого документа в этом последнем наборе есть «uid», совпадающий с «emm_id» в предыдущем наборе документов.В основном это означает:

  • «Пользователь» имеет много разрешенных «событий».

Вы также можете видеть, что документы типа «lf_event_management_master» не имеют «eu_user_id»значение или любой другой ключ, соответствующий этому.

Мой вопрос:

Как я могу получить все документы типа "lf_event_management_master", разрешенные для пользователя "201848611" в одном запросе?

В моем случае у меня есть только идентификатор пользователя (201848611), доступный в точке, где мне нужно получить разрешенные события.В настоящее время происходит следующее:

  • Я получаю все записи "lf_event_users" для этого пользователя.
  • Зацикливание всех результатов из предыдущего запроса и построение нового запроса, извлекая это время для поискавсе "lf_event_management_master", где "uid" включает любое из значений "emm_id", найденных в предыдущем запросе.

Заранее спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...