MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

MeteorJS – Verknüpfen von Bildern (FS.collection) mit ihrem relevanten Dokument in der MongoDB-Sammlung

Dies ist ein häufiger Fall in Meteor/Mongo, in dem Sie zwei Sammlungen verknüpfen möchten. Die Mongo-Dokumentation Haben Sie eine gute Beschreibung dazu.

Nehmen wir an, jeder Ort kann viele Bilder haben. Sie können entweder einen Verweis auf den Ort in das Bild einfügen oder auf die vielen Bilder des Ortes verweisen.

Wenn Sie ein Bild in collectionFS erstellen (ohne die Besonderheiten), achten Sie darauf, die _id beizubehalten des Bildes:

imgId = image.insert();

Wenn Sie möchten, dass sich das Bild auf den Ort bezieht, können Sie das Bild aktualisieren mit:

image.update({ _id: imgId },{ $set: { placeId: myPlace._id }});

oder Sie können $push imgId auf eine Reihe von Bildern in Ihrem Bereich:

Places.update({ _id: myPlace._id },{ $push: { imageArray: imgId }});

Die zweite Form der Referenz ist etwas flexibler, da dasselbe Bild zu mehreren Orten gehören kann (many-to-many). Das ist gut für verschachtelte Orte, zum Beispiel ein Bild vom Times Square ist sowohl ein Bild vom Times Square und ein Bild von New York City und so weiter.

In jedem Fall können Sie beitreten Ihr image und Places Sammlungen mit reywood:publish-composite Paket, das für die einfache Veröffentlichung verwandter Sammlungen entwickelt wurde.

Beachten Sie auch eine gängige Konvention zur Benennung von Sammlungen in Meteor wird der erste Buchstabe groß geschrieben und Pluralform . also Bilder statt Bild . Das liegt daran, dass Sammlungen globale Variablen in Meteor sind und eine Sammlung viele Dinge enthält, nach denen sie benannt ist.