关键词

mongodb实现数组对象求和方法实例

当使用MongoDB存储一个文档中含有数组对象时,经常需要对数组中的某些属性进行求和操作。下面将使用两个示例说明如何使用mongodb实现数组对象的求和方法。

示例一

假设有以下的文档结构:

{
    "_id" : ObjectId("5f0c732508d48a34e20e03d9"),
    "name" : "example",
    "values" : [
        {
            "value" : 10
        },
        {
            "value" : 20
        },
        {
            "value" : 30
        }
    ]
}

如果需要统计values.value的总和,可以通过以下代码实现:

db.collection.aggregate([
   {
      $project: {
         totalSum: { $sum: "$values.value" }
      }
   }
])

输出结果如下:

{ "_id" : ObjectId("5f0c732508d48a34e20e03d9"), "totalSum" : 60 }
  • 英文解释:

    db.collection:代表要操作哪个集合;

    $project:表示查询的投影阶段;

    totalSum:自定义名称,代表输出结果的key;

    $sum:代表对数组中所有value属性值进行求和。

示例二

考虑另一个例子,文档结构如下:

{
    "_id" : ObjectId("5f0c744308d48a34e20e03dd"),
    "name" : "example",
    "values" : [
        {
            "value1" : 20,
            "value2" : 10
        },
        {
            "value1" : 30,
            "value2" : 5
        },
        {
            "value1" : 40,
            "value2" : 15
        }
    ]
}

假设此时需要求values.value1values.value2的总和,可以通过以下代码实现:

db.collection.aggregate([
   {
      $project: {
          _id: 0,
         totalSum1: { $sum: "$values.value1" },
         totalSum2: { $sum: "$values.value2" },
      }
   }
]);

输出结果如下:

{ "totalSum1" : 90, "totalSum2" : 30 }
  • 英文解释:

    db.collection:代表要操作哪个集合;

    $project:表示查询的投影阶段;

    _id: 0:代表不输出_id属性值;

    totalSum1/totalSum2:自定义名称,代表输出结果中的key;

    $sum:代表对数组中所有value属性值进行求和。

小结

以上是使用mongodb实现数组对象求和的两种示例,希望对您有所帮助。在实际项目中,需要根据具体需求来选择合适的方法进行处理,以保证高效率、高性能的实现。

本文链接:http://task.lmcjl.com/news/18648.html

展开阅读全文