2017-05-03 11 views
0

私はかなり長い間ここで問題を抱えています。私は人々がグループにサインアップし、いくつかの画像をアップロードし、その画像に特定のタグを付けることができるMeteorアプリケーションを作成しています。 _idという名前の要素を持つタグのコレクションを取得しました。ユーザーが使用できるMeteorアプリケーションで2つのmongodbコレクション(_idのフィルタリング)からデータを取得する

タグは、その画像のため、グループのコレクションに格納されているが、このコレクションは

グループコレクション(_idsは、そのフィールドに保存されている利用可能なタグ付き)の配列を得ました -

モンゴタグCollec:単一エントリ

{ 
"_id" : "uC3PRu3qdcAF2tKK8", 
"name" : "Summer Festival 2017", 
"token" : "SummerFunUnited", 
"tags" : [ "c6vMNnfJzFjEqDSJv", "RYNSsvmafCdRZ6Me9", "9qJD5L6PYCEcbEKcb" ] 
} 

タグのコレクションに保存されているタグは次のように保存されていますン

{ "_id" : "c6vMNnfJzFjEqDSJv", "name" : "Summerfanatic" } 
{ "_id" : "RYNSsvmafCdRZ6Me9", "name" : "Sunshineaddict" } 
{ "_id" : "9qJD5L6PYCEcbEKcb", "name" : "Danceman" } 

私は、管理者が特定のグループで使用されているか、タグルックアップすることができます管理パネルを作成したいです。ルートは正常に動作していて、Meteorテンプレートでグループの名前を取得できます。

問題は、グループごとにタグのの名前をに表示したい場合、私はそれを動作させることができません。私のMongoの質問は機能していない、または私は本当に何か間違っている。

私は次のように使用して、クエリの場合:

Groups.find({ tags: { $in: [ "c6vMNnfJzFjEqDSJv", "RYNSsvmafCdRZ6Me9", "9qJD5L6PYCEcbEKcb" ] }}) 

私は戻って何の結果を得ることはありません。

私は本当に皆さんが助けてくれることを願っています。タグをより適切な方法で保管するための代替方法も知っています(将来は管理者が新しいタグを追加する必要があります)。

親切!

+0

私はあなたのデータ構造には特別な問題を見ません。しかし、あなたの目的が_tags_を調べることであれば、なぜあなたは 'Groups'に問い合わせていますか?セレクタ内の二重中括弧はなぜですか? – ghybs

+0

二重中括弧は、スタックオーバーフローで上書きされているためです(誤って入力すると、コード内にありません)。 問題はMongoのクエリをどこから始めるべきかわからないので、私は自分のグループコレクションを探している理由を実際には知りません。 短いアンサーでは:私はそれを動作させるために何をすべきかわかりません。 –

+0

[$ in]の使用(https://docs.mongodb.com/manual/reference/operator/query/in/#use-the-in-operator-to-match-values-in-an-array)正しいとあなたのモデル構造も意味があります。 –

答えて

0

あなたのクエリは意味:

tagsフィールドが与えられた配列に少なくとも1つの値(すなわち、タグID)が含まグループ文書を見つけます」。

これは、特定のタグに関連付けられたグループのリスト表示に関連します。

あなたは、特定のグループに関連付けられたタグ(名前で)をリストしたいとします。

あなたが手で所望のグループ文書データたらこれは、かなりまっすぐ進むクエリのように聞こえる:

その後、あなたを使用

_idフィールドが指定された配列内にある検索タグ文書を」これらのタグをループしてnameと表示するテンプレートを作成します。以下のような

何か:

宇宙・天体バー

{{#each groupDoc in groupDocs}} 
    {{> groupTemplate groupDoc1=groupDoc}} 
{{/each}} 

<template name="groupTemplate"> 
    {{#each tagDoc in tagsDocs groupDoc1}} 
     {{tagDoc.name}} 
    {{/each}} 
</template> 

はJavaScript

Template.groupTemplate.helpers({ 
    tagsDocs: function (groupDoc) { 
     var tagsIdArray = groupDoc.tags; 

     return Tags.find({ 
      _id: { 
       $in: tagsIdArray 
      } 
     }); 
    } 
}); 
+0

group.tags配列の$ inでTag.find()クエリを使用すると、私の問題が解決しました! ..ありがとうございました。私はまだ私が推測することを学ぶために多くが必要です! –

関連する問題