带有绑定对象的 CreateIndex

Posted

技术标签:

【中文标题】带有绑定对象的 CreateIndex【英文标题】:CreateIndex with Binding Objects 【发布时间】:2020-02-14 22:08:48 【问题描述】:

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

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

这是我的收藏的架构:

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

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

【问题讨论】:

【参考方案1】:

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

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 频道的其他乐于助人的人,他们为我指明了正确的方向。)

【讨论】:

以上是关于带有绑定对象的 CreateIndex的主要内容,如果未能解决你的问题,请参考以下文章

如何在不重新绑定 this 的情况下返回一个带有粗箭头函数的对象? [复制]

带有核心数据的 Cocoa 绑定不更新所有列

找不到“object”类型的不同支持对象“[object Object]”。 NgFor 仅支持绑定到 Iterables,例如带有异步管道的数组

获取带有绑定参数的 PDO 查询字符串而不执行它

带有绑定参数的 MarkupExtension

带有 Cosmos DB 绑定的 Azure 函数返回格式化的 DateTime?