MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Come ottenere i dati da MongoDB a un array semplice utilizzando Node.JS e Mongoose?

Potresti seguire il percorso del framework di aggregazione, che ha la capacità di appiattire gli array attraverso il $unwind operatore. Questo genererà un nuovo record per ogni elemento del campo dati dell'elenco su cui è applicato lo svolgimento. Fondamentalmente appiattisce i dati.

Dopo aver appiattito i dati, avresti bisogno di $lookup operatore per fare un "unirsi" sui products campo ai products collezione. Ripetere il processo per lo schema dei frutti nidificati.

Vediamo un esempio (non testato) per capirlo meglio

var Schema = require('../model/schema');
Schema.Shop.aggregate([
    { "$unwind": "$products" },
    {
        "$lookup": {
            "from": "products",
            "localField": "products",
            "foreignField": "_id",
            "as": "product"
        }
    },
    { "$unwind": "$product" },
    { "$unwind": "$product.fruits" },
    {
        "$lookup": {
            "from": "fruits",
            "localField": "product.fruits",
            "foreignField": "_id",
            "as": "fruits"
        }
    },  
    {
        "$project": {
            "nameShop": 1,
            "nameProduct": "$product.nameProduct",
            "nameFruit": "$fruits.nameFruit",
            "price": "$fruits.price",
        }
    }
]).exec(function (err, result){
    if (err) throw err;
    console.log(result);
})

ESONERO DI RESPONSABILITÀ :Quanto sopra è un codice non testato che funge solo da guida ipotizzando che si stia eseguendo il codice in un ambiente di test con le ultime versioni di MongoDB e mongoose che supportano $lookup operatore E che puoi eseguire la stessa query di aggregazione in mongo shell.