Parse は完全なリレーショナル データベースを提供しませんが、リレーショナル列をデータ クラスに追加することで、クラス間の多対多の関連付けを可能にします。したがって、たとえば、クラスを作成し、関連付けられたハッシュタグを含むhashtag
関係列をクラスに追加できます。クエリ 1 は、 class に対するクエリを作成し、必要なハッシュタグを指定してから、それをクラスに対するクエリのサブクエリとして追加するpost
ことで回答できます。含まれているクエリでは、ユーザーの場所の近くでを探していることを指定します。例えばhashtag
post
post
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
}];
1 つの Parse クエリで 2 番目のクエリのデータを引き出す簡単な方法は思いつきません。1 つのアプローチは、現在の場所の近くにある を取得し、post
それらを繰り返し処理して、それぞれに関連付けられているタグを特定する (そしてその頻度をカウントする) ことです。
別のオプションは、投稿に対してタグを文字列の配列として保存することです。whereKey:equalTo:
次に、 (単一のタグ) またはwhereKey:containedIn:
(複数のタグ)を使用してタグでクエリを実行できます。このアプローチでは、他の場所に存在するタグを追跡する必要があります。