2014-09-29 84 views
0

我在我的分析数据库中有两个相关字段:产品ID和数量的库存表。收到货物时,将创建一个包含productId和数量的记录。同样,当销售发生时,产品库存记录和产品数量(这将是负面的,因为库存在销售后会减少)。分组合计/合计聚合查询与分析云代码

我想通过Parse Cloud Code对Inventory表上的/ sum聚合查询运行一个组,该Parse Cloud代码输出一个包含唯一的productIds作为键的字典,并将这些Ids的数量列的总和作为值。

我已经看到了一些旧文章的话说,解析并没有这样做,但后来更多最近的职位是指云代码,如averageStart云代码指南:https://parse.com/docs/cloud_code_guide

然而,似乎解析。在averageStars中使用的查询具有1000条记录的最大限制。因此,当我总结数量栏时,我只对1000条记录进行处理,而不是整个表。有没有一种方法可以通过/总和盘点表中的所有记录来计算组?


例如:

清单表

的productId量

记录1:AAAAA 50

记录2:BBBBB 40

记录3:AAAAA -5

记录4:BBBBB -2

记录5:AAAAA 10

记录6:AAAAA -7

输出词典: {AAAAA:48 ,BBBBB:38}

+0

http://stackoverflow.com/questions/32840272/parse-query-aggregations – itzhar 2015-12-05 18:28:58

回答

3

您可以使用Parse.Query.each()。它没有限制。如果你的班级有太多条目,它会超时。

docs

例如为:

var totalQuantity = 0; 
var inventoryQuery = new Parse.Query("Inventory"); 
inventoryQuery.each(
    function(result){ 
     totalQuantity += result.get("quantity"); 
    }, { 
     success: function() { 
      // looped through everything 
     }, 
     error: function(error) { 
      // error is an instance of Parse.Error. 
     } 
    }); 
}); 

如果超时,你必须建立类似this

+0

谢谢!它完美的作品。我稍微修改了代码以输出字典。 – 2014-09-30 02:19:10

3

如果你想看到的代码字典:

Parse.Cloud.define("retrieveInventory", function(request, response) { 
    var productDictionary ={}; 
    var query = new Parse.Query("Inventory"); 
    query.equalTo("personId", request.params.personId); 
    query.each(
    function(result){ 
     var num = result.get("quantity"); 
     if(result.get("productId") in productDictionary){ 
      productDictionary[result.get("productId")] += num; 
     } 
     else{ 
      productDictionary[result.get("productId")] = num; 
     } 
    }, { 
     success: function() { 
      response.success(productDictionary); 
     }, 
     error: function(error) { 
      response.error("Query failed. Error = " + error.message); 
     } 
    }); 
});