使用所有子文档mongo meteor获取不同的对象对

波德

我正在使用流星,并且自3天以来难以解决此问题。我搜索了stackoverflow,但答案似乎无法满足我的需求。我有一个销售表,上面有以下数据。

{
"_id" : 1,
"table" : "Table no 2",
"name" : "Hot Coffee",
"quantity" : 2,
"price" : "$10",
"seller" : "User",
"createdAt" : ISODate("2016-01-06T12:57:17.152Z")
},   
{
"_id" : 2,
"table" : "Table no 3A",
"name" : "Hot Coffee",
"quantity" : 1,
"price" : "$10",
"seller" : "User",
"createdAt" : ISODate("2016-02-01T12:58:17.152Z")
},
{
"_id" : 3,
"table" : "Table no 3A",
"name" : "Pizza",
"quantity" : 2,
"price" : "$50",
"seller" : "User",
"createdAt" : ISODate("2016-01-06T12:58:17.152Z")
},
 {
"_id" : 4,
"table" : "2A",
"name" : "Pizza",
"quantity" : 5,
"price" : "$50",
"seller" : "User",
"createdAt" : ISODate("2016-02-02T11:55:17.152Z")
},   

我期望添加所有数量的独特表名称

{
"name":"Hot Coffee",
"quantity": 3
},
{
"name":"Pizza",
"quantity": 7
}

我尝试了独特的功能,但似乎只显示一个结果。

克列丹

为此,请使用聚合框架,但是由于Meteor还不支持聚合,因此您需要安装聚合框架程序包-它不会起到任何作用,只是为您包装了一些Mongo方法。

只需添加流星meteorhacks:aggregate,您就可以开展业务。这将为Meteor添加适当的聚合支持。

现在,您将需要此管道来获得所需的结果。在mongo shell中,运行以下命令:

var pipeline = [
    {
        "$group": {
            "_id": "$name",
            "quantity": { "$sum": "$quantity" }
        }
    },
    {
        "$project": {
            "name": "$_id", "_id": 0, "quantity": 1
        }
    }
];

db.sales.aggregate(pipeline);

样本输出

{
    "result" : [ 
        {
            "quantity" : 7,
            "name" : "Pizza"
        }, 
        {
            "quantity" : 3,
            "name" : "Hot Coffee"
        }
    ],
    "ok" : 1
}

聚合操作的作用是使用$group流水线步骤将所有文档按name字段分组,对于每个不同的组,您可以使用累加器运算符$sum对每个组的数字字段数量进行累加总数量下一个管道$project将把前一个管道流文档中的字段重塑为所需的结构。

在Meteor中,您可以Sales使用以下模式将这些结果发布到客户端上集合中,前提是您已将汇总包添加到流星应用程序中:

Meteor.publish('getDistinctSalesWithTotalQuantity', function (opts) {

    var initializing = 1;

    function run(action) {

        // Define the aggregation pipeline ( aggregate(pipeline) )
        var pipeline = [
            {
                "$group": {
                    "_id": "$name",
                    "quantity": { "$sum": "$quantity" }
                }
            },
            {
                "$project": {
                    "name": "$_id", "_id": 0, "quantity": 1
                }
            }
        ];

        Sales.aggregate(pipeline).forEach(function(e){
            this[action]('distinct-sales', e.name, e)
            this.ready()
        });
    };

    // Run the aggregation initially to add some data to your aggregation collection
    run('added');

    // Track any changes on the collection we are going to use for aggregation
    var handle = Sales.find({}).observeChanges({
        added(id) {
            // observeChanges only returns after the initial `added` callbacks
            // have run. Until then, we don't want to send a lot of
            // `self.changed()` messages - hence tracking the
            // `initializing` state.
            if (initializing && initializing--) run('changed');
        },
        removed(id) {
            run('changed');
        },
        changed(id) {
            run('changed');
        },
        error(err) {
            throw new Meteor.Error('Aaaaaaaaah! Grats! You broke it!', err.message)
        }
    });

    // Stop observing the cursor when client unsubs.
    // Stopping a subscription automatically takes
    // care of sending the client any removed messages.
    this.onStop(function () {
        handle.stop();
    });
});

以上内容会观察到更改,并在必要时重新运行聚合。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用 Spring MongoRepository 根据相同查询参数的不同值组合获取所有 Mongo 文档

来自分类Dev

mongodb从所有文档中获取所有子文档

来自分类Dev

使用猫鼬为所有文档获取数组中对象的不同值

来自分类Dev

使用Python中的嵌套列表理解从mongo集合中获取所有文档

来自分类Dev

Mongo + Ruby Rails:获取所有嵌入式文档

来自分类Dev

如何使用c#获取XML文档的所有子标记名称?

来自分类Dev

使用有角的$ http获取子文档

来自分类Dev

使用elasticsearchTemplate从ElasticSearch获取所有文档

来自分类Dev

使用GridFSOperations获取所有文档

来自分类Dev

如何使用Mongoose通过id-s获取所有文档,这些文档存储在另一个架构的子文档中?

来自分类Dev

mongo / meteor如何获取最后一个对象?

来自分类Dev

获取具有不同值的对象

来自分类Dev

使用Meteor将所有东西放到Mongo集合中

来自分类Dev

如何使用Retrofit Android获取不同的对象

来自分类Dev

获取Scala中的所有子对象

来自分类Dev

在mongo db中获取文档中数组中日期大于现在的所有元素

来自分类Dev

Mongo在指定位置的10英里范围内获取所有文档

来自分类Dev

使用Spring MongoOperations根据查询获取所有文档

来自分类Dev

使用Spring MongoOperations根据查询获取所有文档

来自分类Dev

如何在Scala中使用反射获取所有对象值和子对象值?

来自分类Dev

如何在Scala中使用反射获取所有对象值和子对象值?

来自分类Dev

从对象及其子对象获取所有名称

来自分类Dev

如何从集合中获取一个文档,并使用 ion-select 列出所有文档?

来自分类Dev

Mongo查询以获取不同的嵌套文档

来自分类Dev

如何使用Mongoose获取具有多个非独占选择器的mongo文档?

来自分类Dev

使用cheerio获取div的所有子节点?

来自分类Dev

删除所有子节点并使用simpleXML获取内容

来自分类Dev

使用Javascript按className或querySelectorAll获取所有子元素

来自分类Dev

使用xmlstarlet / xpath获取所有子名称

Related 相关文章

  1. 1

    使用 Spring MongoRepository 根据相同查询参数的不同值组合获取所有 Mongo 文档

  2. 2

    mongodb从所有文档中获取所有子文档

  3. 3

    使用猫鼬为所有文档获取数组中对象的不同值

  4. 4

    使用Python中的嵌套列表理解从mongo集合中获取所有文档

  5. 5

    Mongo + Ruby Rails:获取所有嵌入式文档

  6. 6

    如何使用c#获取XML文档的所有子标记名称?

  7. 7

    使用有角的$ http获取子文档

  8. 8

    使用elasticsearchTemplate从ElasticSearch获取所有文档

  9. 9

    使用GridFSOperations获取所有文档

  10. 10

    如何使用Mongoose通过id-s获取所有文档,这些文档存储在另一个架构的子文档中?

  11. 11

    mongo / meteor如何获取最后一个对象?

  12. 12

    获取具有不同值的对象

  13. 13

    使用Meteor将所有东西放到Mongo集合中

  14. 14

    如何使用Retrofit Android获取不同的对象

  15. 15

    获取Scala中的所有子对象

  16. 16

    在mongo db中获取文档中数组中日期大于现在的所有元素

  17. 17

    Mongo在指定位置的10英里范围内获取所有文档

  18. 18

    使用Spring MongoOperations根据查询获取所有文档

  19. 19

    使用Spring MongoOperations根据查询获取所有文档

  20. 20

    如何在Scala中使用反射获取所有对象值和子对象值?

  21. 21

    如何在Scala中使用反射获取所有对象值和子对象值?

  22. 22

    从对象及其子对象获取所有名称

  23. 23

    如何从集合中获取一个文档,并使用 ion-select 列出所有文档?

  24. 24

    Mongo查询以获取不同的嵌套文档

  25. 25

    如何使用Mongoose获取具有多个非独占选择器的mongo文档?

  26. 26

    使用cheerio获取div的所有子节点?

  27. 27

    删除所有子节点并使用simpleXML获取内容

  28. 28

    使用Javascript按className或querySelectorAll获取所有子元素

  29. 29

    使用xmlstarlet / xpath获取所有子名称

热门标签

归档