使用 where 参数过滤嵌入式 data_relation?

Using where parameter to filter on embedded data_relation?

是否可以对嵌入式 data_relation 进行过滤?我希望可以提出这样的请求:/domains?where={"account.field_2_filter_by": "myvalue"}/domains?where={"account":{"field_2_filter_by": "myvalue"}} 但我没有成功。

例如,每个 DOMAIN 项目都有一个关联的 ACCOUNT 项目。 DOMAIN 帐户字段为 ACCOUNTS 模式定义了一个 data_relation,而不是一个字典类型。在 ACCOUNTS 和 DOMAINS 架构中,field_2_filter_by 被添加到 allowed_filters.

架构示例:

# URL is /accounts
ACCOUNTS = {
    'query_objectid_as_string': True,
    'schema': {
        '_id': {
            'type': 'string',
            'readonly': True,
        },
        'field_2_filter_by': {
            'type': 'string',
            'readonly': True,
        }
    },
    'resource_methods': ['GET'],
    'item_methods': ['GET'],
    'allowed_filters': ['_id', 'field_2_filter_by'],
    ...
}

# URL is /domains
DOMAINS = {
    'query_objectid_as_string': True,
    'schema': {
        '_id': {
            'type': 'string',
            'readonly': True,
        },
        'domain': {
            'type': 'string',
            'readonly': True,
            'data_relation': {
                'resource': 'accounts',
                'embeddable': True
            },
        }
    },
    'resource_methods': ['GET'],
    'item_methods': ['GET'],
    'allowed_filters': ['account', 'account.field_2_filter_by'],
    ...
}

在端点资源(目标集合)上执行查找。这主要是由于底层 Mongo 数据库,以及 Mongo 处理数据的方式。 mongo 中没有连接,Eve 通过对嵌入的 document/collection 执行额外的查找来实现 'embedding'。您可能希望相应地设计您的数据模型,以使 lookups/queries 更高效。一个好的起点是 MongoDB Data Models and Example Patterns.

郑重声明,随着 support for Aggregation Framework 推出 Eve v0.7,您将能够将聚合查询的结果挂接到 API 端点,这可能允许在这个字段。