mongodb问题:按照教程操作mongodb,但是没有找到mongo

Posted 胡安

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mongodb问题:按照教程操作mongodb,但是没有找到mongo相关的知识,希望对你有一定的参考价值。

错误:

mongo : 无法将“mongo”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写,如果包括路径,请确保路径正
确,然后再试一次。
所在位置 行:1 字符: 1
+ mongo
+ ~~~~~
    + CategoryInfo          : ObjectNotFound: (mongo:String) [], CommandNotFoundException
    + FullyQualifiedErrorId : CommandNotFoundException

探索:

前往安装目录下/bin目录中,没有mongo.exe文件,只有mongod和mongos,以及一个powershell命令脚本。

答案:

原因在于,mongodb6.0以后做出了重大改变,mongodb已经不再默认为你安装shell工具,因此需要安装一个额外的shell:Install mongosh — MongoDB Shell,这个工具被称为mongosh

前往mongoshell页面下载mongoshell,以后就用mongosh连接这个就好了。

记得把mongosh的安装目录也添加到环境变量,然后连接mongosh就好了。

最终解决:

PS E:\\Programs\\mongosh> mongosh
Current Mongosh Log ID: 6463f096f1860e5538895c3b
Connecting to:          mongodb://127.0.0.1:27017/?directConnection=true&serverSelectionTimeoutMS=2000&appName=mongosh+1.8.2
Using MongoDB:          6.0.6
Using Mongosh:          1.8.2

For mongosh info see: https://docs.mongodb.com/mongodb-shell/


To help improve our products, anonymous usage data is collected and sent to MongoDB periodically (https://www.mongodb.com/legal/privacy-policy).
You can opt-out by running the disableTelemetry() command.

------
   The server generated these startup warnings when booting
   2023-05-17T04:57:24.438+08:00: Access control is not enabled for the database. Read and write access to data and configuration is unrestricted
------

test>

参考

https://blog.csdn.net/SDDX_CDY/article/details/126922378

《MongoDB入门教程》第22篇 聚合操作

本文将会介绍如何使用 MongoDB 聚合操作对文档进行分组,以及聚合表达式的使用。

聚合操作

MongoDB 聚合操作可以处理多个文档并返回计算后的结果。聚合操作通常用于按照指定字段的值进行分组并计算汇总结果。例如,聚合操作可以按照不同的产品计算订单中的总销售额。

聚合管道用于执行聚合操作,一个聚合管道包含一个或者多个处理文档的阶段。每个阶段都会基于它的输入文档执行操作,然后返回输出文档;输出文档会传递给下一个阶段,最后一个阶段返回最终的结果。

每个阶段的操作可以是以下内容之一:

  • $project - 选择输出结果中包含的字段;
  • $match - 选择要处理的文档;
  • $limit - 限制传递到下一阶段的文档数量;
  • $skip - 忽略指定数量的文档;
  • $sort - 文档排序;
  • $group - 文档分组;

以下是定义聚合管道的语法:

db.collection.aggregate([ $match:...,$group:...,$sort:...]);

其中,

  • aggregate() 方法用于指定聚合操作;
  • 传递一个文档数组作为参数,每个文档描述了管道中的一个阶段。

MongoDB 4.2 及更高版本支持使用聚合管道更新文档。

聚合示例

首先,使用数据库 coffeeshop 存储咖啡的销量信息:

use coffeeshop

其次,为集合 sales 创建一些测试文档:

db.sales.insertMany([
	 "_id" : 1, "item" : "Americanos", "price" : 5, "size": "Short", "quantity" : 22, "date" : ISODate("2022-01-15T08:00:00Z") ,
	 "_id" : 2, "item" : "Cappuccino", "price" : 6, "size": "Short","quantity" : 12, "date" : ISODate("2022-01-16T09:00:00Z") ,
	 "_id" : 3, "item" : "Lattes", "price" : 15, "size": "Grande","quantity" : 25, "date" : ISODate("2022-01-16T09:05:00Z") ,
	 "_id" : 4, "item" : "Mochas", "price" : 25,"size": "Tall", "quantity" : 11, "date" : ISODate("2022-02-17T08:00:00Z") ,
	 "_id" : 5, "item" : "Americanos", "price" : 10, "size": "Grande","quantity" : 12, "date" : ISODate("2022-02-18T21:06:00Z") ,
	 "_id" : 6, "item" : "Cappuccino", "price" : 7, "size": "Tall","quantity" : 20, "date" : ISODate("2022-02-20T10:07:00Z") ,
	 "_id" : 7, "item" : "Lattes", "price" : 25,"size": "Tall", "quantity" : 30, "date" : ISODate("2022-02-21T10:08:00Z") ,
	 "_id" : 8, "item" : "Americanos", "price" : 10, "size": "Grande","quantity" : 21, "date" : ISODate("2022-02-22T14:09:00Z") ,
	 "_id" : 9, "item" : "Cappuccino", "price" : 10, "size": "Grande","quantity" : 17, "date" : ISODate("2022-02-23T14:09:00Z") ,
	 "_id" : 10, "item" : "Americanos", "price" : 8, "size": "Tall","quantity" : 15, "date" : ISODate("2022-02-25T14:09:00Z")
]);

然后,使用聚合管道查找“Americanos”品牌的咖啡的销量信息,按照杯型分组统计销量,最后按照销量总高到低进行排序:

db.sales.aggregate([
	 
		$match:  item: "Americanos"  
	,
	 
		$group: 
			_id: "$size",
			totalQty: $sum: "$quantity"
		
	,
	
		$sort:  totalQty : -1		
	
]);

返回结果如下:

[
   _id: 'Grande', totalQty: 33 ,
   _id: 'Short', totalQty: 22 ,
   _id: 'Tall', totalQty: 15 
]

示例中的聚合管道包含以下三个阶段:

  • 阶段 1:$match 阶段过滤品牌为“Americanos”的咖啡,将结果传递给 $group 阶段;
  • 阶段 2:$group 阶段按照咖啡杯型进行分组,使用 $sum 计算每个组的总销量。该阶段创建了一个新的文档集合,每个文档包含了 _id 和 totalQty 两个字段,然后将结果文档传递给 $sort 阶段;
  • 阶段 3:$sort 阶段基于 totalQty 字段从大到小进行排序并返回结果文档。

SQL 与 MongoDB 聚合操作对比

以上聚合管道的等价 SQL 语句如下:

select 
   name as _id, 
   sum(quantity) as totalQty
from 
   sales 
where name = 'Americanos'
group by name
order by totalQty desc; 

下表列出了 SQL 和 MongoDB 聚合操作的比对:

SQL 子句MongoDB 聚合
select$project
fromdb.collection.aggregate(…)
join$unwind
where$match
group by$group
聚合函数:avg、count、sum、max、min表达式:$avg、$count、$sum、$max、$min
having$match

以上是关于mongodb问题:按照教程操作mongodb,但是没有找到mongo的主要内容,如果未能解决你的问题,请参考以下文章

《MongoDB入门教程》第22篇 聚合操作

《MongoDB入门教程》第22篇 聚合操作

ubuntu 连接mongodb失败?

MongoDB 使用教程

MongoDb 入门教程

MongoDB基础教程系列--第二篇 MongoDB基本操作