微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何使用Fauna和FQL查询一定范围的值?

如何解决如何使用Fauna和FQL查询一定范围的值?

我在FaunaDB上遇到问题。我是新手,浏览过文档,但是没有运气。我将立即向您展示代码,但SO抱怨我的问题中的代码太多了。

我正在尝试使用FQL执行以下sql语句:

SELECT * FROM order
  WHERE cid = '1234'
  AND fulfilled = false
  AND rank >= 0
  AND rank <= 100 

我尝试了以下操作:

q.Paginate(
  q.Intersection(
    q.Match(
      q.Index('order_by_cid'),'1234',),q.Match(
      q.Index('order_by_status'),false,q.Range(
      q.Match('order_by_rank'),[0],[100]
    ),)
)

但这返回{ data: [] }

我的索引:

{
  ref: Index("order_by_cid"),ts: 1602095185756000,active: true,serialized: true,name: "order_by_cid",source: Collection("order"),terms: [{ field: ["data","cid"] }],partitions: 1
}

{
  ref: Index("order_by_status"),ts: 1602163027885000,name: "order_by_status","fulfilled"] }],partitions: 1
}

{
  ref: Index("order_by_rank"),ts: 1602611790710000,name: "order_by_rank",values: [{ field: ["data","rank"] },{ field: "ref" }],partitions: 8
}

解决方法

索引应为:

CreateIndex(
  {
    name:'refByCidFulfilled',source:Collection("order"),terms:[{field:['data','cid']},{field:['data','fulfilled']}],values:[{field:['data','rank']},{field:['ref']}]
  }
)

您可以查询

Map(
  Paginate(
    Range(
      Match('refByCidFulfilled',[1234,false]),[1],[100])),Lambda(['rank','ref'],Get(Var('ref')
    )
  )
)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。