2015-06-20 68 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

相關問題