我在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:
也是如此。
任何想法都非常感激。
答案 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"]