簡體   English   中英

如何在 FaunaDB 中獲取一組不是 null 的文檔

[英]How to get a set of not null documents in FaunaDB

我正在學習這個官方教程,並創建了一個類似的索引。

下面是我的代碼,用於計算startend的差異,哪個end可以為空。

CreateIndex({
  name: "foo_index",
  source: {
    collection: Collection("bar_collection"),
    fields: {
      interval: Query(
        Lambda(
          "bazDoc",
          If(
            Or(
              IsNull(Select(["data", "start"], Var("bazDoc"), null)),
              IsNull(Select(["data", "end"], Var("bazDoc"), null))
            ),
            null,
            Subtract(
              Select(["data", "end"], Var("bazDoc")),
              Select(["data", "start"], Var("bazDoc"))
            )
          )
        )
      )
    }
  },
  values: [
    { binding: "interval"},
    { field: ["ref", "id"]}
  ]
})

這是返回,我想過濾掉所有interval為null的文檔。我應該如何實現。

{
  data: [
    [9, "353542771515064533"],
    [10, "353542807600758997"],
    [null, "353542787197567188"],
    [null, "353542814197350613"]
  ]
}

順便說一句,我是 FaunaDB 的新手,除了 Fauna 自己的文檔之外,請推薦一些學習資源。

文檔 state

當文檔被索引時,所有索引的定義values都計算為null ,不會為該文檔存儲任何索引條目。

由於您還包括 ref ID,它永遠不會是null ,因此總會創建一個索引條目。

但是,您可以添加另一個綁定,該綁定也返回 null,以防間隔為 null,否則返回 Ref。 這樣,兩個值都將為 null,並且不會創建任何條目。


CreateIndex({
  name: "foo_index",
  source: {
    collection: Collection("bar_collection"),
    fields: {
      interval: Query(
        Lambda(
          "bazDoc",
          If(
            Or(
              IsNull(Select(["data", "start"], Var("bazDoc"), null)),
              IsNull(Select(["data", "end"], Var("bazDoc"), null))
            ),
            null,
            Subtract(
              Select(["data", "end"], Var("bazDoc")),
              Select(["data", "start"], Var("bazDoc"))
            )
          )
        )
      ),
      ref: Query(
        Lambda(
          "bazDoc",
          If(
            Or(
              IsNull(Select(["data", "start"], Var("bazDoc"), null)),
              IsNull(Select(["data", "end"], Var("bazDoc"), null))
            ),
            null,
            Select(["ref"], Var("bazDoc"))
          )
        )
      )
    }
  },
  values: [
    { binding: "interval" },
    { binding: "ref" }
  ]
})

我在這里將整個 Ref 作為值包括在內,這是我推薦的。 它可以更輕松地與其他查詢結合使用,並且所有驅動程序都允許您在其他查詢中使用 Ref 值,並在您的應用程序中需要的地方獲取像ref.id這樣的 ID。

請推薦一些學習資源,而不是 Fauna 自己的文檔。

我希望其他人也可以在這里參與。 我在 Fauna 的客戶支持團隊工作,想強調一下,我們有討論論壇discord 服務器 我自己和其他 Fauna 員工盡最大努力確保每個論壇問題都在合理的時間內得到解決,要么由社區解決,要么由我們自己回答; 我們在 discord 很活躍,更適合一般性討論。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM