sql >> Databasteknik >  >> NoSQL >> MongoDB

Hur man returnerar en sträng med mongodb-aggregation

.aggregate() metod returnerar alltid Objects oavsett vad du gör och det kan inte ändras.

För ditt ändamål är det förmodligen bättre att använda .distinct() istället, vilket bara returnerar en array av de distinkta värdena:

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

Vilket är exakt din önskade utdata:

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

Om du verkligen vill använda .aggregate() då behöver omvandlingen till bara värdena ske "utanför" uttrycket i efterbehandling. Och du bör också använda $unwind när man hanterar sådana här arrayer.

Du kan göra detta med JavaScript .map() till exempel:

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

Vilket ger samma utdata, men .map() gör transformationsklientsidan istället för på servern.



  1. Hur man släpper en databas i MongoDB från kommandoraden

  2. Finns det ett enkelt sätt att exportera data från en meteor-app?

  3. Slaget om NoSQL-databaserna - Jämför MongoDB och Cassandra

  4. MongoDB $toDouble