PHP MongoDB对所有列求和
MongoDB聚合框架是否可以用于汇总所有列或列数组,而不仅仅是一列 每行都有一个“类别id”。我希望通过一个特定的类别id进行过滤,然后输出一行,这是每列的总和。因为我不需要所有的列,所以如果我可以指定列来提高性能,那就更好了 我看到过这样的例子:使用1列完成,但不使用多列 下面是示例数据PHP MongoDB对所有列求和,php,mongodb,mongodb-query,aggregation-framework,Php,Mongodb,Mongodb Query,Aggregation Framework,MongoDB聚合框架是否可以用于汇总所有列或列数组,而不仅仅是一列 每行都有一个“类别id”。我希望通过一个特定的类别id进行过滤,然后输出一行,这是每列的总和。因为我不需要所有的列,所以如果我可以指定列来提高性能,那就更好了 我看到过这样的例子:使用1列完成,但不使用多列 下面是示例数据 { "type" : "A", "a" : 1, "b" : 2, "c" : 3, "d" : 4 } { "type" : "A", "a" : 10, "b" : 20, "c" : 30, "d
{ "type" : "A", "a" : 1, "b" : 2, "c" : 3, "d" : 4 }
{ "type" : "A", "a" : 10, "b" : 20, "c" : 30, "d" : 40 }
{ "type" : "B", "a" : 1, "b" : 2, "c" : 3, "d" : 4 }
{ "type" : "B", "a" : 10, "b" : 20, "c" : 30, "d" : 40 }
因此,当类型为B时,结果将为
{ "type" : "B", "a" : 11, "b" : 22, "c" : 33, "d" : 44 }
可以看出,每一列都已求和,返回一行和每一列的总和
我正在使用PHP和Debian的最新版本MongoDB
谢谢我们没有您的数据作为一个清晰的示例,但您似乎基本上是在寻找将提供的值列表“添加”在一起的运算符。因此,给出一份文件样本:
{ "type" : "A", "a" : 1, "b" : 2, "c" : 3, "d" : 4 }
{ "type" : "A", "a" : 10, "b" : 20, "c" : 30, "d" : 40 }
{ "type" : "B", "a" : 1, "b" : 2, "c" : 3, "d" : 4 }
{ "type" : "B", "a" : 10, "b" : 20, "c" : 30, "d" : 40 }
本例仅针对“a”、“b”和“c”将所有“列”一起“添加”。也按“类型”分组:
如果不需要或正在以其他方式处理不同级别的数据,也可以使用with
该数据的结果将是:
{ "_id" : "B", "total" : 66 }
{ "_id" : "A", "total" : 66 }
实际上,您所问的只是为每一列做一个测试:
db.collection.aggregate([
{ "$group": {
"_id": "$type",
"a": { "$sum": "$a" },
"b": { "$sum": "$b" },
"c": { "$sum": "$c" },
"d": { "$sum": "$d" }
}}
])
产生:
{ "_id" : "B", "a" : 11, "b" : 22, "c" : 33, "d" : 44 }
{ "_id" : "A", "a" : 11, "b" : 22, "c" : 33, "d" : 44 }
你能提供一个例子来说明你的数据和你想要的结果吗?请用JSON格式。对不起,我的问题模棱两可。。。我已经更新了一个例子对不起。。走开了---但那看起来正是我想要的。。。我现在就测试一下,让你知道。。。。感谢您还应该注意,上面的解决方案似乎返回ok,但为空result@user1641165对我有用。你是如何引用PHP的?请注意,您需要像“$a”这样的内容,而不是“$a”,它将进行插值。是的。。。你是对的。。。。您的解决方案确实有效。。。我犯了一个错误。我先用终端测试您的解决方案,因为它不是为PHP设计的。我只得到一个总数,但我想为每一个总数3columns@user1641165这就是为什么例子对你的问题很重要。这只是简单的$sum聚合。
{ "_id" : "B", "a" : 11, "b" : 22, "c" : 33, "d" : 44 }
{ "_id" : "A", "a" : 11, "b" : 22, "c" : 33, "d" : 44 }