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