Comment puis-je référencer des données d’une collection à une autre? Mongodb

router.get('/productSelect', (req, res, next) =>{ productSchema.aggregate([ { $lookup: { from: 'supplierSchema', localField: 'supplierId', foreignField: '_id', as: 'supplier' } } ], (err, productSchema) =>{ if(err) res.json(err); else res.json(productSchema); }); }); 

Je veux obtenir des données de la collection

 [ { "_id": "5ba26ff33318b51e20a80fb3", "productExist": true, "productName": "Anything", "supplierId": "5b9d25064dcf2327b449ae1b", "brandId": "5b9d162a316e8d2660f26393", "categoryId": "5ba2509a6367372568b1ce6d", "productPrice": 222, "productQuantity": 320, "productMax": 3, "productMin": 4, "productTimeStamp": "2018-09-19T15:49:07.177Z", "__v": 0 } ] 

et remplacez l’ID fournisseur en tant que nom fournisseur de la collection

 [ { "_id": "5b9d25064dcf2327b449ae1b", "supplierExist": true, "supplierName": "NBA World Wide", "supplierStatus": "Available", "supplierTimeStamp": "2018-09-15T15:28:06.971Z", "__v": 0 } ] 

Pour faire une jointure avec deux tables, assurez-vous que le type des champs, c’est-à-dire localField et foriegnField doit être identique.

Ou

Avec mongodb 4.0, vous pouvez facilement changer le type de Ssortingng en ObjectId utilisant l’agrégation $toObjectId

 productSchema.aggregate([ { "$lookup": { "from": "supplierSchema", "let": { "supplierId": { "$toObjectId": "$supplierId" }}, "pipeline": [ { "$match": { "$expr": { "$eq": ["$_id", "$$supplierId"] }}} ] as: "supplier" }} ])