how to use aggregate function in meteor

前端 未结 4 1260
悲哀的现实
悲哀的现实 2020-12-07 01:46

I\'m working on the following document

{
\"_id\" : 12,
\"firstName\" : \"wer\",
\"People\" : [ 
    {
        \"uuid\" : \"123\",
        \"name\" : \"sugun\         


        
相关标签:
4条回答
  • 2020-12-07 01:54

    Here is what I tried manually and worked for me:

    var rawUsers = Meteor.users.rawCollection();
    var aggregateQuery = Meteor.wrapAsync(rawUsers.aggregate, rawUsers);
    var pipeline = [
        {$match: {}},
        {$project: {username: 1, profile: 1}}
    ];
    var result = aggregateQuery(pipeline);
    
    return result;
    

    Read more about Meteor.wrapAsync here

    0 讨论(0)
  • 2020-12-07 02:13

    You need to add a package to expose the aggregate feature:

    meteor add monbro:mongodb-mapreduce-aggregation

    Then you can use the code like normal:

    var MyCollection = new Mongo.Collection('metrics');
    var pipeline = [
      {$group: {_id: null, resTime: {$sum: "$resTime"}}}
    ];
    
    var result = MyCollection.aggregate(pipeline);
    

    Just a couple of things to note, this works best on the server side. For docs to use it on the client side a fork of the package is needed, check the package's docs: https://atmospherejs.com/monbro/mongodb-mapreduce-aggregation

    0 讨论(0)
  • 2020-12-07 02:17

    By using rawCollection you can pass in the same pipeline that you've been using in your mongo shell.

    There is no need to install a third-party package to do this.

    const stats = await MyCollection.rawCollection()
        .aggregate([
          {$match: {_id: 12}}, 
          {$unwind: "$People"}, 
          {$unwind: "$People.person"}, 
          {$match: {"People.uuid": "123", "People.person.uuid" : "add32"}}
        ])
        .toArray();
    
    0 讨论(0)
  • 2020-12-07 02:19

    I used the meteorhacks:aggregate package. It works only on the server side.

    meteor add meteorhacks:aggregate

    MyCollection.aggregate({ 
      $match: { 
        propertyToQuery: 'valueForProperty' 
      }, { 
        $group: {
          _id: '$propertyToGroupBy',
          result: { $operation: '$propertyToPerformOperationOn' }
        }
    });
    

    https://github.com/meteorhacks/meteor-aggregate https://themeteorchef.com/snippets/aggregations-in-mongodb/

    0 讨论(0)
提交回复
热议问题