我读过聚合框架依赖于“管道”架构,即
db.myCollection.aggregate({
$op1: { ... }
},{
$op2: { ... }
})
另一方面,“传统”的 mongo 命令行查询语法也类似于管道:
db.myCollection.find({
field: 'value'
}).filter({
...
}).forEach({
...
})
- 引擎盖下的实现有什么不同吗?
- “传统”语法也有点像管道 - 为什么存在替代语法?
我读过聚合框架依赖于“管道”架构,即
db.myCollection.aggregate({
$op1: { ... }
},{
$op2: { ... }
})
另一方面,“传统”的 mongo 命令行查询语法也类似于管道:
db.myCollection.find({
field: 'value'
}).filter({
...
}).forEach({
...
})
引擎盖下的实现有什么不同吗?
很多。例如,第一个在其 C++ 代码中作为聚合框架“在”MongoDB 中运行,而另一个在捆绑的 JS 控制台内的 V8/spidermonkey(取决于您的版本)环境中运行。
值得一提的是,您展示的后一种语法不是在“内部”MongoDB 中运行,而是在 JS 控制台中运行,该控制台具有通过 JS 驱动程序与 MongoDB 交互的能力。
这适用于大多数数据库,例如 MySQL 控制台和许多其他数据库。它们只是捆绑的客户端程序。
“传统”语法也有点像管道 - 为什么存在替代语法?
因为控制台不是 MongoDB。