Parse 不提供完整的关系数据库,但您可以将关系列添加到数据类,这允许类之间的多对多关联。因此,例如,您可以创建一个hashtag
类,并在您的post
类中添加一个包含相关主题标签的关系列。查询 1 可以通过针对hashtag
class 构建查询,指定所需的主题标签,然后将其添加为针对post
class 的查询的子查询来回答。在您的包含查询中,您将指定您正在寻找post
用户位置附近的 s。例如
PFQuery *tagQuery = [PFQuery queryWithClassName:@"hashtag"];
[tagQuery whereKey:@"tagName" equalTo:@"hash_tag_name"];
PFQuery *postQuery = [PFQuery queryWithClassName:@"post"];
[postQuery whereKey:@"hashtags" matchesQuery:tagQuery];
[postQuery whereKey:@"location" nearGeoPoint:userLocation withinMiles:50.0];
[postQuery findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) {
//Do something with results
}];
我想不出用单个 Parse 查询提取第二个查询的数据的简单方法。一种方法是仅检索post
当前位置附近的 s,然后遍历它们以确定与每个标签相关联的标签(并计算它们的频率)。
另一种选择是将标签存储为针对帖子的字符串数组。然后,您可以使用whereKey:equalTo:
(单个标签)或whereKey:containedIn:
(多个标签)按标签查询。使用这种方法,您需要跟踪其他地方存在哪些标签。