从Meteor中的Mongodb文档返回一个字段(数组)的内容

时间:2015-06-20 07:02:34

标签: javascript mongodb meteor

我在Meteor工作,试图只检索Mongodb文档中一个字段的内容。该特定字段是数组。我已经阅读了Mongo文档和几个相关问题,但我的预测并没有奏效。这就是我所拥有的:

用户使用以下格式添加到数组:

Template.One.events({
    'submit form': function(e) {
        e.preventDefault();
        var currentId = this._id
        var oneProperties = {
            selections: $(e.target).find('[name=selection]').val()
        };
        Charts.update(currentId, ($addToSet: selections}, function() {});
    }
});

结果文件:

{
    "_id": "some ID",
    "selections": ["A","B"]
}

请参阅帮助程序中的数组以获取其他模板以访问其他集合中的文档。

Template.Two.helpers({
    comps: function() {
        var selected = Charts.findOne({_id:this._id}, {selections:1, _id:0});
        return Companies.find({ticker: {$in: selected}});
    }
});

当我直接在控制台中运行上面的Charts.findOne查询时,它会返回整个文档,没有任何限制。

如果我仅使用Charts.findOne({_id:this._id}, {selections:1, _id:0});替换["A","B"],那么其他所有内容都能正常运行。所以我知道这是投影本身。我也无法判断这个查询是否只需要数组,这就是我需要的,或者名称selections:也是如此。

任何想法都非常感激。

1 个答案:

答案 0 :(得分:2)

尝试访问文档的选择字段,该字段应该直接为您提供数组,而不是整个文档:

var selected = Charts.findOne({_id:this._id}, {selections:1, _id:0});

会给你{ "selections": ["A","B"] }

但是

var selected = Charts.findOne({_id:this._id}, {selections:1, _id:0}).selected;

将为您提供所需的数组

["A","B"]