簡體   English   中英

動物區系從交叉點刪除第一個項目

[英]Fauna delete first item from intersection

我有一個動物區數據庫查詢,由於字段組合是唯一的,它將返回一個匹配項:

await faunaClient.query(
  Intersection(
    Match(Index('tokens_search_by_blacklisted'), false),
    Match(Index('tokens_search_by_token'), refreshToken),
    Match(Index('tokens_search_by_type'), tokenTypes.REFRESH)
  )
)

我想知道的是如何從這里刪除返回的第一個項目,我知道理論上我可以分頁,lambda delete 但我不想迭代。 我只想刪除返回的第一個值。

我知道如果你使用 Get 它會從集合中獲取第一個項目,但遺憾的是 delete 不會這樣做,我不應該讓對象也執行讀取只是為了選擇 ref 然后刪除。

當您使用Match時,結果是索引支持的集合的集合引用。 即使索引沒有在values定義中明確指定ref字段,此類集合也包括對所涵蓋文檔的引用。

使用IntersectionUnionDifference后,結果集僅包括索引values定義中定義的字段:隱式ref字段丟失。

在 Fauna 中,集合是無界的,因此在通過PaginateGet實現集合之前,沒有任何具體的項目可以操作。 因此,您需要使用其中一個函數來從交叉點檢索元組。

您可以將頁面大小設置為 1,以便Paginate僅返回一項。 Paginate的實現在它有一個充滿結果的頁面時立即返回,因此它執行得非常好。

您需要確保Intersection結果中的元組包含要刪除的文檔引用,否則您將無法刪除。

暫無
暫無

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

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