Pregunta

i have this structure in my mongodb

    {
        category:['A','B'],
        info:.....,
    }
    {
        category:['A','F','T'],
        info:.....,
    }
    {
        category:['A','C'],
        info:.....,
    }
    {
        category:['D','B'],
        info:.....,
    }

i have to query all categories,

var db = mongo.db(read+"@127.0.0.1:27017/database",{safe:false});
db.collection('comercio').find({},{_id:0,'category.$':1},function(err, result_array)

first question, there is any way to get all categories?? an other aproach instead of mine??

second question....

i have to make an array that contains all categories but not repeat any category... in this example i have to make an array that contains this...

all_categories=['A','B','C','D','F','T'];

thank you all again...

¿Fue útil?

Solución

You must use Aggregation framework for this query, like this:

db.comercio.aggregate( { $unwind : "$category" } );

After unwind you can use other aggregations (e.g. group) to get what you need.

Otros consejos

You don't need aggregation framework to get back an array of distinct categories.

Just use distinct:

> db.comercio.distinct("category");
["A","B","C","D","F","T"]
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top