在 Meteor 应用程序中从两个 mongodb 集合(根据 _id 过滤)获取数据

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

我在这里遇到问题已经有一段时间了。我正在创建一个 Meteor 应用程序,人们可以在其中注册一个群组、上传一些图像并可以为他们的图像添加特定标签。我得到了一个特定的标签集合,其中包含一个 _id 和一个 name 元素。

用户可以为其图像使用的标签存储在组集合中,但该集合有一个数组(可用标签 _ids 存储在该字段中)

群组合集 - 单个条目

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

Tags 集合中存储的 Tags 存储方式如下:

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

类似于:

空格键

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