0

我读过聚合框架依赖于“管道”架构,即

db.myCollection.aggregate({
  $op1: { ... }
},{
  $op2: { ... }
})

另一方面,“传统”的 mongo 命令行查询语法也类似于管道:

db.myCollection.find({
  field: 'value'
}).filter({
  ...
}).forEach({
  ...
})
  1. 引擎盖下的实现有什么不同吗?
  2. “传统”语法也有点像管道 - 为什么存在替代语法?
4

1 回答 1

3

引擎盖下的实现有什么不同吗?

很多。例如,第一个在其 C++ 代码中作为聚合框架“在”MongoDB 中运行,而另一个在捆绑的 JS 控制台内的 V8/spidermonkey(取决于您的版本)环境中运行。

值得一提的是,您展示的后一种语法不是在“内部”MongoDB 中运行,而是在 JS 控制台中运行,该控制台具有通过 JS 驱动程序与 MongoDB 交互的能力。

这适用于大多数数据库,例如 MySQL 控制台和许多其他数据库。它们只是捆绑的客户端程序。

“传统”语法也有点像管道 - 为什么存在替代语法?

因为控制台不是 MongoDB。

于 2013-03-18T18:46:31.967 回答