簡體   English   中英

從流星應用程序中的兩個mongodb集合中獲取數據(對_id進行過濾)

[英]Getting data from two mongodb collections (filtering on _id) in Meteor Application

我有一段時間在這里遇到問題。 我正在創建一個Meteor應用程序,人們可以在其中注冊一個組,上傳一些圖像,並可以為其圖像指定特定的標簽。 我得到了包含_idname元素的Tag的特定集合。

用戶可以將用於其圖像的標簽存儲在Group集合中,但是此集合獲得了一個數組(在該字段中存儲了可用的標簽_ids

群組集合-單項

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

存儲在標簽集合中的標簽的存儲方式如下:

Mongo標簽集合

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

我想創建一個管理面板,管理員可以在其中查找特定組中正在使用的標記。 路由工作正常,我可以在Meteor模板中獲取組的名稱。

問題是,如果我想顯示每個組的標簽名稱 ,我將無法使用它。 我的Mongo查詢不起作用,或者我確實做錯了。

如果我使用和查詢類似:

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

我沒有結果。

我真的希望你們能為我提供幫助,或者希望您找到一種更合適的方式來存儲標簽(在將來,管理員仍然必須添加新標簽)。

親切的問候!

您的查詢意思是:

在給定數組中找到tags字段至少包含一個值(即標簽ID)的組文檔 ”。

因此,這對於列出與某些給定標簽關聯的組將是相關的。

您說要列出與給定組關聯的標簽(按名稱)。

一旦您擁有所需的組文檔數據,這聽起來像是一個非常簡單的查詢:

找到標記文檔,其中_id字段位於給定數組中

然后使用您的Blaze模板遍歷這些標簽並顯示其name

就像是:

Spacebars

{{#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
            }
        });
    }
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM