Javascript 按id匹配集合项目
两个mongo系列之间的关系。 我有两个集合:条目和标签:Javascript 按id匹配集合项目,javascript,mongodb,meteor,Javascript,Mongodb,Meteor,两个mongo系列之间的关系。 我有两个集合:条目和标签: // example Entry { "_id": "4ZCBv5ogLStfFxpvp", "title": "Some other title", "entryLabels": [ "TFrYvEujpqbMryWEZ", "rn8Z57NsEYse7nYTo", "rn8Z57NsEYse73YTo" ], "author": "TMviRL8otm3ZsddSt", "create
// example Entry
{
"_id": "4ZCBv5ogLStfFxpvp",
"title": "Some other title",
"entryLabels": [
"TFrYvEujpqbMryWEZ",
"rn8Z57NsEYse7nYTo",
"rn8Z57NsEYse73YTo"
],
"author": "TMviRL8otm3ZsddSt",
"createdAt": "2016-01-16T15:21:43.153Z",
"date": "2016-01-16T15:21:43.153Z"
}
// Example Label
{
"_id": "9NCNPGH8F5MWNzjkA",
"color": "#333",
"name": "Grey Label",
"author": "TMviRL8otm3ZsddSt"
}
因为一个条目可能有多个标签,所以我将标签ID保留在entryLabels字段中。
我的计划是只保存标签ID,然后在此基础上查询标签集合
如果我有一个labelID,这是可以的,因为我可以基于该ID查询Labels集合并返回一个标签。但是,我有一个ID数组,必须返回多个标签
我的尝试如下(在模板帮助器中):
<代码>标签:功能(事件){
var entryLabels=this.entryLabels;
var arr=[]
对于(i=0;i{{#each labels}}
{{name}}
<p>asd</p>
{{/each}}
{{{#每个标签}
{{name}}
自闭症
{{/每个}}
这将返回“asd”3次,但我无法访问标签属性,如名称 所以,我想我的问题是,我怎样才能访问这些属性。 也。。我这样做对吗 我这样做对吗 我会说不。与几乎任何其他数据库一样,mongo可以一次检索多个文档。既然可以,为什么要在
for循环中一次提取一个
labels: function(event){
var entryLabels = this.entryLabels;
var arr = Labels.find({_id: {$in: entryLabels}}).fetch();
return arr;
}
这也将解决“我无法访问名称等标签属性”的问题,因为旧的arr
是的数组的文档,而不是您期望的文档数组 明智地复制数据可以是创建最佳文档数据库模式的一部分。话虽如此,马丁的回答应该是好的Labels.find().fetch()
是Meteor Mongo Labels集合上的Meteor方法,而不是Mongo Labels集合上的异步MongoDb查找。@charliebrownie-它将返回一个数组,并且不会异步运行,因为fetch
。文档中几乎完全相同的示例(我真的错过了fetch()
详细信息,再次抱歉!!)(我真的错过了fetch()
详细信息,再次抱歉!!)
labels: function(event){
var entryLabels = this.entryLabels;
var arr = Labels.find({_id: {$in: entryLabels}}).fetch();
return arr;
}