Re: create new variables in aggregation?

From: ch@xxxxxxxxxxxxxxxxxx
To: mongodb-user <mongodb-user@xxxxxxxxxxxxxxxx>
Date: Mon, 18 Apr 2016 00:28:14 -0700 (PDT)
Why ads?
Maybe something like this?

db.test.aggregate(
  [
    // Stage 1
    {
      $match: { 
        result: 1
      }
    },


    // Stage 2
    {
      $group: {
        _id: "$name",
        formats: { $addToSet: "$format"}
      } 
    },


    // Stage 3
    {
      $project: {
        name: "$name",
        pdf: {$setIsSubset: [["pdf"], "$formats"]},
        htm: {$setIsSubset: [["htm"], "$formats"]},
        xml: {$setIsSubset: [["xml"], "$formats"]}
      }
    }
  ]
);


You need the group because your context stretches over multiple documents. 
The last stage just translates from set representation to your final output 
format. And the first stage gets rid of all false results, which basically 
makes group only add true values to the set and as a side-effect also 
speeds up the group operator itself. I am sure there are other solutions.

Cheers
Chris

On Friday, April 15, 2016 at 6:58:15 PM UTC+2, Tim Arnold wrote:

I have a collection with documents like this (one fruit, one format, one 
result):

{name: 'apple', result: 1, format:'pdf'}
{name: 'apple', result: 0, format:'xml'}
{name: 'apple', result: 1, format:'htm'}
{name: 'pear', result: 0, format:'pdf'}
{name: 'pear', result: 1, format:'xml'}
{name: 'pear', result: 0, format:'htm'}

I want to transform it to these two documents (one fruit, three format 
variables, three result values):
{name: 'apple', pdf:1, xml:0, htm:1}
{name: 'pear', pdf:0, xml:1, htm:0}

Is this possible?
I am reading the doc on the aggregation pipeline but I'm not sure how/if 
it can be done.

thanks,
--Tim



-- 
You received this message because you are subscribed to the Google Groups "mongodb-user"
group.

For other MongoDB technical support options, see: https://docs.mongodb.org/manual/support/
--- 
You received this message because you are subscribed to the Google Groups "mongodb-user" group.
To unsubscribe from this group and stop receiving emails from it, send an email to mongodb-user+unsubscribe@xxxxxxxxxxxxxxxx.
To post to this group, send email to mongodb-user@xxxxxxxxxxxxxxxx.
Visit this group at https://groups.google.com/group/mongodb-user.
To view this discussion on the web visit https://groups.google.com/d/msgid/mongodb-user/e2b04547-0211-436b-86dc-2c49e6f56f5b%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
Why ads?