faunadb - 动物区系按参考搜索
问题描述
我的products
收藏中有两份文件...
{
"ref": Ref(Collection("products"), "300137558676865540"),
"ts": 1622492331145000,
"data": {
"product_id": 1004,
"display_name": "Product By ABC",
"description": "Product Description ABC",
"status": "in_stock",
"price_current": 100,
"supplier": Ref(Collection("suppliers"), "300137504766427654")
}
},
{
"ref": Ref(Collection("products"), "300137592998855170"),
"ts": 1622492386360000,
"data": {
"product_id": 1005,
"display_name": "Product By XYZ",
"description": "Product Description XYZ",
"status": "in_stock",
"price_current": 150,
"supplier": Ref(Collection("suppliers"), "300137513423471107")
}
}
然后我的suppliers
收藏中还有两份文件...
{
"ref": Ref(Collection("suppliers"), "300137504766427654"),
"ts": 1622492279715000,
"data": {
"supplier_id": 205,
"display_name": "Test Supplier ABC"
}
},
{
"ref": Ref(Collection("suppliers"), "300137513423471107"),
"ts": 1622492287963000,
"data": {
"supplier_id": 206,
"display_name": "Test Supplier XYZ"
}
}
如何按参考字段搜索products
集合?supplier
任何帮助表示赞赏!谢谢!
解决方案
Fauna 中的所有搜索都是使用索引完成的。您需要为您的“产品”集合创建一个索引,指定“供应商”作为搜索字段(也就是terms
索引中的字段):
CreateIndex({
name: "products_by_supplier",
source: Collection("products"),
terms: [{ field: ["data", "supplier"]}]
})
然后,您可以找到该supplier
字段与特定供应商的参考匹配的所有产品:
> Paginate(
Match(
Index("products_by_supplier"),
Ref(Collection("suppliers"), "300137504766427654")
)
)
{ data: [ Ref(Collection("products"), "300137558676865540") ] }
如果要验证结果是否正确,可以遍历结果以获取关联的产品文档:
> Map(
Paginate(
Match(
Index("products_by_supplier"),
Ref(Collection("suppliers"), "300137504766427654")
)
),
Lambda("X", Get(Var("X")))
)
{
data: [
{
ref: Ref(Collection("products"), "300137558676865540"),
ts: 1622501576960000,
data: {
product_id: 1004,
display_name: 'Product By ABC',
description: 'Product Description ABC',
status: 'in_stock',
price_current: 100,
supplier: Ref(Collection("suppliers"), "300137504766427654")
}
}
]
}
请注意,ts
我的结果中的字段与您的不同,因为我刚刚创建了这些文档。
有关详细信息,请参阅搜索教程:https ://docs.fauna.com/fauna/current/tutorials/indexes/search
推荐阅读
- python - Python 如果总是错
- amazon-web-services - 如何解决 InsufficientS3BucketPolicyException 错误信息
- ios - 不要在颤振应用程序上使用 in_app_purchase 检索我的购买
- colors - 在 spyder 编辑器中更改一个字符的颜色
- c++ - 用预处理器替换 C++ 类/静态方法?
- android - 如何在 Android Studio 中创建一个包含调试和主包的 Android 库模块?
- c - C中的浮点异常(核心转储),不确定错误的含义
- microsoft-graph-api - 如何使用 Graph API 从 Share Point Online Team Site 获取文档?
- r - 如何分离混合模型,并拟合单独的线性模型
- oracle - LNNVL 代替 NOT IN?