mongodb 基础查询使用

  1. 环境安装
    https://blog.csdn.net/qq_42402648/article/details/134932412
    net start MongoDB 启动
    net stop MongoDB 停止
  2. 测试插入数据结构
java 复制代码
{
  "create_time": {
    "$data": "1711244538176"
  },
  "language": "en",
  "create_time01": "1711244538176",
  "source": "ximalaya",
  "time": 848
}
  1. 数据基础查询
java 复制代码
	 查询source为ximalaya
	 {"source":"ximalaya"}
	 查询source为ximalaya,language为 zh 
	 {"source":"ximalaya","language":"zh"}
	 查询source为ximalaya,time<300
	 {"source":"ximalaya","time":{"$lt":300}}
	  查询source为ximalaya,language为zh或者ko
	 {"source":"ximalaya","language":{"$in":["jp","ko"]}}
	 查询source为null  false为null,true 不为null
	 {"source":{"$exists":false}}
	 根据time降序 -1降序,1 升序
	 {"time":-1}
	 
  1. 聚合查询
java 复制代码
统计language为zh的总数
[
  {
    $match: {
      language: "zh",
    }
  },
  {
      $count: 'language_count'
  }
]

根据source分组统计总数
[
  {
    $group: {
      _id: "$source",
      count: {
        $sum: 1
      }
    }
  }
]
根据source分组统计所有time和
[
  {
    $group: {
      _id: "$source",
      count: {
        $sum: 1,
      },
      time_sum: {
        $sum: "$time",
      },
    },
  },
]
数组文档拆分 ,一拆多行数据
[
  {
    $unwind:  "$tag"
  },
]
关联表查询
[
  {
    $match: {
      source: "qintin",
    },
  },
  {
    $lookup: {
      from: "base_info_v2",
      localField: "v2_id",
      foreignField: "id",
      as: "v2Info",
    },
  },
]
  1. 管道操作符
java 复制代码
 $project 指定输出的字段
[
  {
    $project: {
      sourceName: "$source",
      date:"$time",
    },
  },
]
 $match 添加过滤条件
[
  {
    $match: {
      source:"youtube"
    }
  },
  {
    $project: {
      sourceName: "$source",
      date:"$time",
    },
  },
]
 $count 统计结果总数
[
  {
    $match: {
      source:"youtube"
    }
  },
  {
    $count: 'sourceCount'
  }
]

分组后将输出结果使用project重新命名
[
  {
    $group: {
      _id: "$source",
      count:{
         $sum:1
      }
    }
  },
  {
    $project: {
      source:"$_id",
      count:"$count"
    }
  }
]

根据时间分组(时间格式化)

再根据source分组 统计出每天每个来源的总数

将分组后的数据重新命名 ,再次根据时间分组

最后 根据时间 升序排序

java 复制代码
[
  {
    $group: {
      _id: {
        date: {
          $dateToString: {
            format: "%Y-%m-%d",
            date: "$create_time",
          },
        },
        source: "$source",
      },
      count: {
        $sum: 1,
      },
    },
  },
  {
    $project: {
      date: "$_id.date",
      source: "$_id.source",
      count: "$count",
    },
  },
  {
    $group: {
      _id: "$date",
      positions: {
        $push: {
          source: "$source",
          count: "$count",
        },
      },
    },
  },
  {
    $sort: {
      _id: 1
    }
  }
]
相关推荐
ly768913 小时前
MongoDB 副本集选举风暴排查:从心跳超时到 Journal 刷盘阻塞
数据库·mongodb·php·mongodb 副本集·选举风暴·journal 刷盘·writeconcern
SL-staff2 天前
技术实践:将Excel自动升级为可搜索的知识节点(JVS平台实现)
mongodb·elasticsearch·知识图谱·jvs平台·语义解析·企业文档管理·excel结构化
ClouGence3 天前
数据库迁移工具 CloudCanal v6.5.0.0 发布:新增 TDSQL PostgreSQL 多条链路,支持 MongoDB 双向同步
数据库·mysql·mongodb
浪子明X3 天前
MongoDB 迁移方案评审:用双写窗口和回放样本控制切换风险
数据库·mongodb
蜗牛互联网8 天前
MongoDB Atlas Agent Engine之后,如何用版本门禁防止陈旧写入
java·数据库·人工智能·后端·mongodb
天空'之城12 天前
单片机基础核心知识点汇总(四十六)
数据库·单片机·mongodb
Dragon_qu·x13 天前
MongoDB 高可用集群部署
运维·数据库·mongodb·k8s·helm
MayBaymax21 天前
MongoDB 索引与事务
java·数据库·mongodb
&不羁之风&21 天前
从 MySQL 到 MongoDB:80 万系统日志(sys_log)平滑迁移完整实战(含 Windows 环境 mongoimport 安装与避坑)
mysql·mongodb
那人如此可好23 天前
MongoDB常用命令大全
mongodb·db