iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >mongodb实现数组对象求和
  • 502
分享到

mongodb实现数组对象求和

2024-04-02 19:04:59 502人浏览 泡泡鱼
摘要

mongoDB实现数组对象求和?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。 {  "_id"&

mongoDB实现数组对象求和?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。


{
 "_id" : ObjectId("5c414a6a0847e00385143003"),
 "date" : "2019-01-18 09",
 "data" : [ 
 {
  "app_platfORM" : "iOS",
  "user" : 3028
 }, 
 {
  "app_platform" : "Android",
  "user" : 4472
 }, 
 ]
}
...

现在我们需要计算date日期为"2019-01-18 09"并且app_platform的类型为"ios"的user总数

如果可以,请先思考下monGodb语句如何实现。

实现过程中有个执行非常重要,即$unwind,官方解释:

Deconstructs an array field from the input documents to output a document for each element. Each output document is the input document with the value of the array field replaced by the element.

从输入文档中解构一个数组字段,为每个元素输出一个文档。每个输出文档都是输入文档,数组字段的值由元素替换。

于是我们便想到将data数组对象分条拆开,化繁为简,mongodb语句如下:

db.getCollection('user').aggregate([
 {
 $project: { _id: 1, data: 1, date: 1}
 },
 { 
 $match: {"date": "2019-01-18 09"}
 }, 
 {
 $unwind: "$data"
 },
])

得到结果如下:


{
    "_id" : ObjectId("5c414a6a0847e00385143003"),
    "date" : "2019-01-18 09",
    "data" : {
        "app_platform" : "ios",
        "user" : 3028
    }
}

{
    "_id" : ObjectId("5c414a6a0847e00385143003"),
    "date" : "2019-01-18 09",
    "data" : {
        "app_platform" : "android",
        "user" : 4472
    }
}

可以看到数据由数组变成了多条文档数据,于是问题转变为计算结果的user总数,是不是觉得问题变简单了,而且我们也可以继续使用$match来过滤app_platform数据,mongodb语句如下:

db.getCollection('user').aggregate([
 {
 $project: { _id: 1, data: 1, date: 1}
 },
 { 
 $match: {"date": "2019-01-18 09"}
 }, 
 {
 $unwind: "$data"
 },
 {
 $match: {
 "data.app_platform": { $in: ["ios"]}
 },
 }
])

执行结果如下:


{
    "_id" : ObjectId("5c414a6a0847e00385143003"),
    "date" : "2019-01-18 09",
    "data" : {
        "app_platform" : "ios",
        "user" : 3028
    }
}

可以看到数据已经被过滤了,如果自信观察两个$match的作用可以发现,mongodb是按顺序执行的,即$match作用于其前面的操作结果集合

让我们继续计算,此时只需要使用group与sum对data里的user字段求和即可,mongodb语句如下:

db.getCollection('user').aggregate([
 {
 $project: { _id: 1, data: 1, date: 1}
 },
 { 
 $match: {"date": "2019-01-18 09"}
 }, 
 {
 $unwind: "$data"
 },
 {
 $match: {
 "data.app_platform": { $in: ["ios"]}
 }
 },
 {
 $group: { _id: null, "user": {$sum: "$data.user"}}
 }
])

结果如下:


{
    "_id" : null,
    "user" : 7500
}

计算得出的user即我们所需要的数据。

其实所有的难点如下:

  • 计算数组对象数据时将其转变为多条简单的数据格式,$unwind指令将问题轻松得降低了难度

  • mongodb的执行顺序,$project,$match都是顺序执行并作用于之前的操作结果

理解了这两点,相信再难的mongodb语句你也能实现。

看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注编程网数据库频道,感谢您对编程网的支持。

您可能感兴趣的文档:

--结束END--

本文标题: mongodb实现数组对象求和

本文链接: https://www.lsjlt.com/news/55853.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • mongodb实现数组对象求和
    mongodb实现数组对象求和?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。 {  "_id"&...
    99+
    2022-10-18
  • mongodb实现对对某列求和SUM
    mongodb数据如下:db.cpc_0103.find(){ "a" : 8, "b" : "108177_200701010000", "c" : 108177, "d" : 180, "e" : 14...
    99+
    2022-10-18
  • 【MongoDB学习笔记23】MongoDB的索引对象和数组
    MongoDB允许深入文档内部,对嵌套字段和数组建立索引;嵌套对象和数组字段可以和复合索引中的顶级字段一起使用,多数情况下与“正常”索引字段的行为也是一致的。 一、索引嵌套文档例如,集合中的文档如...
    99+
    2022-10-18
  • javascript如何实现对数组求和
    本篇内容主要讲解“javascript如何实现对数组求和”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“javascript如何实现对数组求和”吧! ...
    99+
    2022-10-19
  • php对数组求和
    在PHP中,数组是一种非常有用的数据结构。它可以用来存储一组相关的数据,并使得对数据操作更加方便。数组中的元素可以是任意类型的,包括数字、字符串、对象等。当我们需要对数组中的所有元素进行求和操作时,可以使用PHP内置的函数array_sum...
    99+
    2023-05-19
  • JavaScript如何实现对象和数组转化
    这篇文章将为大家详细讲解有关JavaScript如何实现对象和数组转化,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。对象和数组转化Object.keys({name:&#...
    99+
    2022-10-19
  • Jquery如何实现Map对象和数组、对象之间的转换
    本篇内容介绍了“Jquery如何实现Map对象和数组、对象之间的转换”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、JQuery中Map对...
    99+
    2023-07-05
  • php对数组值求和
    在使用PHP开发中,经常会遇到对数组中的值进行求和的需求,这时候可以使用PHP提供的一些函数来实现。PHP提供了两个函数来计算数组中的值的总和:array_sum()和array_reduce()。array_sum()函数用于计算数组中所...
    99+
    2023-05-23
  • es6对象转数组怎么实现
    ES6 提供了一种简洁的方式将对象转换为数组,可以使用 `Object.entries()` 方法。 `Object.entries...
    99+
    2023-10-26
    es6
  • JavaScript类数组和可迭代对象如何实现
    本篇内容介绍了“JavaScript类数组和可迭代对象如何实现”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成...
    99+
    2022-10-19
  • java object对象转数组怎么实现
    在Java中,可以使用反射来实现将对象转换为数组。首先,通过使用 getClass() 方法获取对象的类信息,然后使用 getDec...
    99+
    2023-10-18
    java
  • JavaScript排序对象数组怎么实现
    这篇文章主要介绍“JavaScript排序对象数组怎么实现”,在日常操作中,相信很多人在JavaScript排序对象数组怎么实现问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”...
    99+
    2022-10-19
  • react 怎么实现数组求和
    本教程操作环境:windows10系统、react18版,DELL G3电脑。react 怎么实现数组求和?React :求出数组中所有数字的和需求:求出数组中所有数字的和解析:需使用受控组件,并绑定onChange事件(不绑定,React...
    99+
    2023-05-14
    数组 React
  • es6如何实现数组求和
    本文小编为大家详细介绍“es6如何实现数组求和”,内容详细,步骤清晰,细节处理妥当,希望这篇“es6如何实现数组求和”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。 ...
    99+
    2022-10-19
  • react如何实现数组求和
    这篇“react如何实现数组求和”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“react如何实现数组求和”文章吧。react...
    99+
    2023-07-04
  • python实现给定一个数和数组,求数组
    给定一个整数数组和一个目标值,找出数组中和为目标值的两个数。你可以假设每个输入只对应一种答案,且同样的元素不能被重复利用。 示例: 给定 nums = [2, 7, 11, 15], target = 9 因为 nums[0] + num...
    99+
    2023-01-30
    数组 个数 python
  • JS实现数组/对象数组删除其中某一项
    目录数组/对象数组删除其中某一项移除对象数组中指定元素数组/对象数组删除其中某一项 由于日常工作中经常需要对数组进行操作,最经常使用到的就是对数组进行的删除操作 对于我们前端来说,数...
    99+
    2022-11-13
  • jquery和php json字符串转数组对象 和 数组对象转json字符串
    JSON 与 数组对象转化 要实现从对象转换为 JSON 字符串,使用 JSON.stringify() 方法: var json = JSON.stringify({a: 'Hello', b: 'World'}); //结果是 '...
    99+
    2023-09-01
    jquery json 前端
  • 一文详解JavaScript数组对象和字符串对象
    目录一、数组对象1.数组类型检测2.添加或删除数组元素3.【案例】筛选数组4.数组排序5.数组索引6.【案例】数组去除重复元素7. 数组转换为字符串8.其他方法二、字符串对象1.字符...
    99+
    2023-05-17
    JavaScript字符串对象 JavaScript数组对象
  • SpringMVC请求域对象的数据共享怎么实现
    本篇内容主要讲解“SpringMVC请求域对象的数据共享怎么实现”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“SpringMVC请求域对象的数据共享怎么实现”吧!SpringMVC支持路径中的占...
    99+
    2023-06-29
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作