[英]How to retrieve entities by passing array of IDs as input in Google datastore?
[英]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
客户端库提供的结构化属性和结构化属性值的筛选 。
我个人更愿意为每个日期数组创建单独的实体,并将date
和otherProps
作为属性-在查询中用作排序/过滤器要简单得多。 一般而言,恕我直言,因为它避免了(重复的)日期数组属性列表,因此更具可扩展性,请参阅在GAE / P中创建自己的活动日志 。
您可以简单地使用arrayName.date < certainDate
引用查询中的元素。 因为索引不是复合索引,所以它将起作用,这意味着您不会尝试过滤类似yourKind.property = value and arrayName.date < certainDate
。
我强烈建议您不要将日期另存为字符串,而是使用时间戳记(例如javascript(new Date())。getTime()),在长时间使用的情况下,这样做会非常容易,主要是如果您使用多个时区。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.