簡體   English   中英

如何使用對象數組過濾Google數據存儲區實體

[英]How to filter google datastore entities with object array

給定一種數據存儲實體結構,其中一列(日期)包含一個對象數組:

[{date: 2018-01-01T00:00:00Z, otherProps:x }, {date: 2018-01-02T00:00:00Z, otherProps: x}, {date: 2017-12-31T00:00:00Z, otherProps: x}]

是否可以在實體dates數組中的最早日期構造一個復雜的索引和查詢。

例如,我想選擇最早的日期在某個日期之前的所有實體...這是我第一次涉足NoSQL,因此很抱歉!

這可能很棘手,因為查詢排序和過濾通常基於屬性值,並且在您的情況下,這些值將是整個日期數組,而不僅僅是其中的日期值。

根據實際使用的客戶端庫,這可能是可能的。 例如,請參見ndb客戶端庫提供的結構化屬性結構化屬性值的篩選

我個人更願意為每個日期數組創建單獨的實體,並將dateotherProps作為屬性-在查詢中用作排序/過濾器要簡單得多。 一般而言,恕我直言,因為它避免了(重復的)日期數組屬性列表,因此更具可擴展性,請參閱在GAE / P中創建自己的活動日志

您可以簡單地使用arrayName.date < certainDate引用查詢中的元素。 因為索引不是復合索引,所以它將起作用,這意味着您不會嘗試過濾類似yourKind.property = value and arrayName.date < certainDate

我強烈建議您不要將日期另存為字符串,而是使用時間戳記(例如javascript(new Date())。getTime()),在長時間使用的情況下,這樣做會非常容易,主要是如果您使用多個時區。

暫無
暫無

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

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