Question

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...

Était-ce utile?

La solution

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.

Autres conseils

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"]
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top