这是 Meteor/Mongo 中的常见情况,您想要关联两个集合。mongo 文档对此有很好的描述。
假设每个地方可以有很多图像。您可以在图像中引用该地点,也可以引用该地点的许多图像。
当您在 collectionFS 中创建图像时(省略细节),请确保保留_id
图像的:
imgId = image.insert();
如果您想让图像引用该位置,则可以使用以下内容更新图像:
image.update({ _id: imgId },{ $set: { placeId: myPlace._id }});
或者您可以$push
imgId
在您所在位置的一组图像上:
Places.update({ _id: myPlace._id },{ $push: { imageArray: imgId }});
第二种引用形式更加灵活,因为同一张图像可以属于多个位置(多对多)。这适用于嵌套的地方,例如时代广场的图片既是时代广场的图片又是纽约市的图片等等。
无论哪种方式,您都可以使用reywood:publish-composite包加入您的image
收藏集,该包旨在轻松发布相关收藏集。Places
另请注意,在 Meteor 中命名集合的常见约定是首字母大写和复数形式。即图像而不是图像。这是因为集合是 Meteor 中的全局变量,并且集合包含许多以它命名的东西。