如何在单个查询中基于其他文档的属性从CouchDB中查找文档?

时间:2018-12-29 18:55:42

标签: join couchdb

已经有一个现有的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
    }
]

如您所见,最后一组中的每个文档都有一个与上一组文档中的“ emm_id”匹配的“ uid”。基本上,这意味着:

  • “用户”具有许多允许的“事件”。

您还可以看到“ lf_event_management_master”类型的文档没有“ eu_user_id”值或与此匹配的任何其他键。

我的问题是:

如何在单个查询中获得用户“ 201848611”允许的所有类型为“ lf_event_management_master”的文档?

就我而言,我只有在需要获取允许的事件时可以使用用户ID(201848611)。当前正在发生的事情是:

  • 我获得了该用户的所有“ lf_event_users”记录。
  • 从以前的查询中查找所有结果,并构建一个新查询,提取该时间以查找所有“ lf_event_management_master”,其中“ uid”包括在先前查询中找到的任何“ emm_id”值。

谢谢。

0 个答案:

没有答案