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
    }
  }
]
相关推荐
爬山算法16 小时前
MongoDB(86)如何使用MongoDB存储大文件?
数据库·mongodb
知识分享小能手18 小时前
MongoDB入门学习教程,从入门到精通,MongoDB的了解应用程序的动态(18)
数据库·学习·mongodb
知识分享小能手1 天前
MongoDB入门学习教程,从入门到精通,MongoDB 安全完全指南(19)
学习·安全·mongodb
disgare2 天前
MongoDB 底层原理
数据库·mongodb
gihigo19983 天前
基于MSComm控件的PC串口通信程序(中断方式接收数据)
数据库·mongodb
知识分享小能手3 天前
MongoDB入门学习教程,从入门到精通,MongoDB的分片管理(17)
数据库·学习·mongodb
清风6666663 天前
基于单片机的自动存包柜设计
单片机·嵌入式硬件·mongodb·毕业设计·课程设计·期末大作业
爬山算法3 天前
MongoDB(88)如何进行数据迁移?
数据库·mongodb
知识分享小能手4 天前
MongoDB入门学习教程,从入门到精通,MongoDB的选择片键 - 完整知识点(16)
数据库·学习·mongodb
知识分享小能手4 天前
MongoDB入门学习教程,从入门到精通,MongoDB分片配置完全指南(15)
数据库·学习·mongodb