覆盖给定时间范围的 NoSQL select 个时间范围
NoSQL select timeRanges that cover a given timeRange
我正在使用 Google App Engine 的数据存储作为我的数据库。我有一群用户让我们称他们为提供者,他们给出了他们在一周内可用的时间范围。喜欢 3-4 p.m。和 4:30-7:30 p.m。然后,另一位用户走过来说我想看看谁在 5-6 p.m 有空。在这一天。我如何获得表示他们有空的用户列表 5-6 p.m。对数据建模并获得此结果的最佳方法是什么?
最好知道您使用什么语言。
我假设您使用 Java 和 Objectify。下面的代码省略了一些细节。本质上,您需要 index fromDate 和 toDate 之后根据从用户输入获得的参数来过滤提供程序。
public class Provider {
...
@index Date availableFrom;
@index Date availableTo;
...
}
public class ProviderService {
@ApiMethod(name = "getByRange")
public List<Provider> getByRange( @Named("availableFrom") String
availableFrom, @Named("availableTo") String availableTo{
List<Provider> providers=
ofy().load().type(Provider.class).filter("availableFrom >=",
availableFrom).filter("availableTo <=", availableTo).list();
return providers;
}
Filter by date example
Multiple filters example
蒂姆霍夫曼的评论是正确答案。使用时间增量并为每个增量存储变量。如果您只有一个时间范围,都灵是正确的,但如果有多个时间范围,问题就会变得非常不同。
我正在使用 Google App Engine 的数据存储作为我的数据库。我有一群用户让我们称他们为提供者,他们给出了他们在一周内可用的时间范围。喜欢 3-4 p.m。和 4:30-7:30 p.m。然后,另一位用户走过来说我想看看谁在 5-6 p.m 有空。在这一天。我如何获得表示他们有空的用户列表 5-6 p.m。对数据建模并获得此结果的最佳方法是什么?
最好知道您使用什么语言。 我假设您使用 Java 和 Objectify。下面的代码省略了一些细节。本质上,您需要 index fromDate 和 toDate 之后根据从用户输入获得的参数来过滤提供程序。
public class Provider {
...
@index Date availableFrom;
@index Date availableTo;
...
}
public class ProviderService {
@ApiMethod(name = "getByRange")
public List<Provider> getByRange( @Named("availableFrom") String
availableFrom, @Named("availableTo") String availableTo{
List<Provider> providers=
ofy().load().type(Provider.class).filter("availableFrom >=",
availableFrom).filter("availableTo <=", availableTo).list();
return providers;
}
Filter by date example
Multiple filters example
蒂姆霍夫曼的评论是正确答案。使用时间增量并为每个增量存储变量。如果您只有一个时间范围,都灵是正确的,但如果有多个时间范围,问题就会变得非常不同。