【问题标题】:Fauna Search By Ref动物区系按参考搜索
【发布时间】:2021-08-19 02:54:23
【问题描述】:

我在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"
  }
}

如何通过supplier 参考字段搜索products 集合?任何帮助表示赞赏!谢谢!

【问题讨论】:

    标签: faunadb


    【解决方案1】:

    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

    【讨论】:

      猜你喜欢
      • 2017-07-03
      • 2020-12-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-08
      • 2021-05-23
      • 2017-03-07
      相关资源
      最近更新 更多