当前位置: 首页 > 编程笔记 >

在MongoDB中将数组项分组并获得具有相似价格的产品计数?

卢恩
2023-03-14
本文向大家介绍在MongoDB中将数组项分组并获得具有相似价格的产品计数?,包括了在MongoDB中将数组项分组并获得具有相似价格的产品计数?的使用技巧和注意事项,需要的朋友参考一下

要对数组项进行分组,请使用$ group和$ sort。让我们创建一个包含文档的集合-

> db.demo566.insertOne(
... {
...
...    "ProductInformation" : [
...       {
...          "ProductName" : "Product-1",
...          "ProductPrice" :100
...       },
...       {
...          "ProductName" : "Product-2",
...          "ProductPrice" :1100
...       },
...       {
...          "ProductName" : "Product-3",
...          "ProductPrice" :100
...       },
...       {
...          "ProductName" : "Product-4",
...          "ProductPrice" :1100
...       },
...       {
...          "ProductName" : "Product-5",
...          "ProductPrice" :100
...       }
...    ]
...
... }
... );
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e908e2339cfeaaf0b97b57a")
}

在find()方法的帮助下显示集合中的所有文档-

> db.demo566.find();

这将产生以下输出-

{ "_id" : ObjectId("5e908e2339cfeaaf0b97b57a"), "ProductInformation" : [
   { "ProductName" : "Product-1", "ProductPrice" : 100 },
   { "ProductName" : "Product-2", "ProductPrice" : 1100 },
   { "ProductName" : "Product-3", "ProductPrice" : 100 },
   { "ProductName" : "Product-4", "ProductPrice" : 1100 },
   { "ProductName" : "Product-5", "ProductPrice" : 100 } 
] }

以下是对数组项进行分组的查询-

> db.demo566.aggregate([
... {
...    "$unwind": "$ProductInformation"
... },
... {
...    "$group": {
...       "_id": "$ProductInformation.ProductPrice",
...       "Value": { "$sum" : 1 }
...    }
... },
... { "$sort": { "_id" :1 } }
... ])

这将产生以下输出-

{ "_id" : 100, "Value" : 3 }
{ "_id" : 1100, "Value" : 2 }
 类似资料:
  • 问题内容: 我不知道如何很好地解释这一点,所以请多多包涵。 我试图对彼此相邻的相似行进行分组,如果相同,则基本上忽略第n + 1行。我不确定这在MySQL中是否容易实现。这些行除描述外不共享其他任何属性。如果还有其他不重复的“描述”,我仍然希望将它们返回。 我有一张桌子,上面满是这样的条目: 问题答案: 您可以使用巧妙的技巧来做到这一点。诀窍是计算与特定id 不同 的描述的数量。对于序列中的值,此

  • 问题内容: 我有一个看起来像这样的数据框: 如何求和并计算,以得到一个看起来像这样的新数据框? 我知道如何求和 或 计数: 但不是两者都要做! 问题答案: 尝试这个: 或者如果您不想重置索引: 要么 演示:

  • 我有一个具有相同键值uid的多维数组。我想把它转换成子数组通过限制Foreachloop.you可以看到两个uid有值100和两个uid有值5465 我想得到这样的阵列。 我可以不使用foreach循环得到结果吗?

  • 问题内容: 我试图获取数组中的最大值,同时仍保留项目标签。我知道我可以通过运行sort()来做到这一点,但是如果这样做,我只会丢失标签- 这对于我需要的东西毫无意义。这是数组: 有任何想法吗? 问题答案: 不要对数组进行排序以获取最大值。 获得最大值: 获取相应的密钥:

  • 问题内容: 我有这样一个浮点数组: 现在,我想像这样对数组进行分区: // [200]由于集群支持较少,将被视为异常值 我必须为多个数组找到这种段,但我不知道分区大小应该是多少。我试图通过使用层次聚类(聚集)来做到这一点 ,它为我提供了令人满意的结果。但是,问题是,建议我不要对一维问题使用聚类算法,因为这样做没有任何理论上的依据(因为它们是针对多维数据的)。 我发现了另一个建议,而不是聚类,即自然

  • 问题内容: 假设我有个数组,另一个数组。我如何得到结果数组? 问题答案: 如果您不需要保留订单,并考虑和保持一致: