[英]How to get a set of not null documents in FaunaDB
我正在學習這個官方教程,並創建了一個類似的索引。
下面是我的代碼,用於計算start
和end
的差異,哪個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 自己的文檔之外,請推薦一些學習資源。
當文檔被索引時,所有索引的定義
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.