使用 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 端点,这可能允许在这个字段。
是否可以对嵌入式 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 端点,这可能允许在这个字段。