7

我有一个包含时间类型字段的集合。我需要能够按年或月-年组合查询此集合。

我曾尝试在网站本身上使用索引创建工具,使用条款中的Year(data.expDate)Month(data.expDate)之类的东西,但这不起作用。

这是我的收藏的架构:

type Expense {
  _id: ID!
  expAmount: Float!
  expDate: Time!
  expCategory: Category!
  _ts: Long!
}

我需要能够列出特定年份或特定月份年份的费用,而不必在我的集合中创建单独的月份和年份字段。

4

1 回答 1

8

解决方案是基于计算字段创建索引,然后将其绑定为术语,例如:

CreateIndex({
  name: "expByYearMonth",
  source: [{
    class: Collection("Expense"),
    fields: {
      year:Query(Lambda("doc",Year(Select(["data","expDate"],Var("doc"))))),
      month:Query(Lambda("doc",Month(Select(["data","expDate"],Var("doc")))))
    }
  }],
  terms: [{ binding: "year" }, { binding: "month" }]
})

然后我可以按年、月搜索并获得类似的结果:

Paginate( Match(Index('expByYearMonth'), [2019, 10]) )

(特别感谢 @colllin 和 Fauna Slack 频道的其他乐于助人的人,他们为我指明了正确的方向。)

于 2019-10-17T23:30:41.640 回答