Mongodb Meteor:如何使用_id字段将一个集合中的字段填充到另一个集合中?
在mongo中,我有一个文档将挂起的用户ID存储在collaborators对象数组中,如下所示:Mongodb Meteor:如何使用_id字段将一个集合中的字段填充到另一个集合中?,mongodb,meteor,Mongodb,Meteor,在mongo中,我有一个文档将挂起的用户ID存储在collaborators对象数组中,如下所示: researchThread { _id: 4374583575745756 pending: { collaborators: [ { userId: '13745845754745753' }, { userId: '23755845854745731' }, {
researchThread {
_id: 4374583575745756
pending: {
collaborators: [
{
userId: '13745845754745753'
},
{
userId: '23755845854745731'
},
{
userId: '33755845653741736'
}]
}
}
userId是用户集合中用户的_id字段。每个用户还具有一个名称和一个电子邮件字段
如何为researchThread.pending.collaborators对象数组中的每个用户将用户名和电子邮件字段从用户集合填充到此文档中?此外,在模板中使用时,填充的数据是否会反应?通过每个协作者循环,通过搜索用户集合中的id找到相关的用户文档,并使用该信息更新researchThread文档 如果researchThread集合是Meteor.collection(您在模板中从中绘制),则数据将是被动的
但是,为什么要复制用户数据?当您需要模板中的数据时,为什么不让Meteor根据researchThread用户ID查询users集合?所以只需在客户端上对users集合执行数据库查询,并使用模板帮助程序将用户名和电子邮件放入模板中?这有什么安全问题吗?差不多。安全性在另一层。你应该在Meteor文档中阅读它,了解如何处理它。我不熟悉Meteor的这方面,但这似乎效率低下。将_id分组到单个users.find()查询中,然后在结果中循环,而不是潜在地为每个collaborators项发送新请求,会有什么好处吗?是的。最后他问的问题真的一针见血,你应该做的是把合作者拉到一个直线阵列中(在你的出版物或助手方法中,取决于你的设置和你所追求的),可能使用groupBy或下划线方法,然后从你的用户集合中获取它们(在客户端上,或者根据您的设置在两者上)使用$in操作符传入数组。