sql >> Databasteknik >  >> NoSQL >> MongoDB

MeteorJS - Länka bilder (FS.collection) till deras relevanta dokument i MongoDB Collection

Detta är ett vanligt fall i Meteor/Mongo där man vill relatera två samlingar. mongodokumenten ha en bra skrivning om detta.

Låt oss säga att varje plats kan ha många bilder. Du kan antingen sätta en referens till platsen inuti bilden eller referera till de många bilderna från platsen.

När du skapar en bild i collectionFS (som utelämnar detaljerna), se till att behålla _id av bilden:

imgId = image.insert();

Om du vill att bilden ska referera till platsen kan du sedan uppdatera bilden med:

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

eller så kan du $push imgId på en rad bilder i din plats:

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

Den andra formen av referens är lite mer flexibel genom att samma bild kan tillhöra flera platser (många-till-många). Detta är bra för kapslade platser, till exempel en bild av Times Square är både en bild av Times Square och en bild av New York City och så vidare.

Hur som helst kan du gå med din image och Places samlingar med reywood:publish-composite paket som är designat för enkel publicering av relaterade samlingar.

Observera också att en vanlig konvention för namngivning av samlingar i Meteor är första bokstaven versal och pluralform . dvs Bilder istället för bild . Detta beror på att samlingar är globala variabler i Meteor och en samling innehåller många av de saker som den är uppkallad efter.




  1. Fråga på MongoDB Delete Triggers

  2. redis för loggning

  3. Mongoose, indexera platser array

  4. Använd mongoexport med en --query för ISODate