2015-06-20 83 views
1

我在Meteor工作,并试图检索Mongodb文档中的一个字段的内容。这个特定的字段是一个数组。我已经阅读了Mongo文档和几个相关的问题,但是我的预测不起作用。这是我有:从Meteor的Mongodb文档返回一个字段(一个数组)的内容

用户采用以下形式添加到阵列:

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查询,返回整个文档,没有任何限制。

如果我用["A","B"]代替Charts.findOne({_id:this._id}, {selections:1, _id:0});,那么其他一切都很完美。所以我知道这是投影本身。我也不知道这个查询是否会返回只需要数组,这是我需要的,或者名称selections:以及。

任何想法非常赞赏。

+0

您需要以编程方式创建整个对象: http://stackoverflow.com/questions/22331216/programmatically-updating-fields-in-mongo-and-meteor – fuzzybabybunny

回答

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"] 
+1

谢谢!比我做得更简单。最后的查询是: var selected = Charts.findOne({_ id:this._id})。selections; – Bren

相关问题