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

Sådan returneres række af strenge med mongodb-aggregation

.aggregate() metode returnerer altid Objects uanset hvad du gør, og det kan ikke ændre sig.

Til dit formål er du sandsynligvis bedre stillet ved at bruge .distinct() i stedet, hvilket bare returnerer en række af de forskellige værdier:

db.users.distinct("emails.address");

Hvilket er præcis dit ønskede output:

["[email protected]","[email protected]","[email protected]"]

Hvis du virkelig vil bruge .aggregate() så skal transformationen til netop værdierne ske "uden for" udtrykket i efterbehandlingen. Og du bør også bruge $unwind når man beskæftiger sig med arrays som denne.

Du kan gøre dette med JavaScript .map() for eksempel:

db.users.aggregate([
    { "$unwind": "$emails" },
    { "$group": { "_id": "$emails.address" } }
]).map(function(el) { return el._id })

Hvilket giver det samme output, men .map() udfører transformationen på klientsiden i stedet for på serveren.



  1. Hvad betyder *((char*)-1) ='x' kode?

  2. Er Redis liste eller sæt pop metode tråd sikker?

  3. SCAN vs KEYS ydeevne i Redis

  4. Områdeforespørgsel til MongoDB-paginering