2

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

2 Answers 2

1

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.

Sign up to request clarification or add additional context in comments.

Comments

1

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"]

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.