0

アグリゲーションフレームワークは「パイプライン」アーキテクチャに依存していることを読みました。

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

一方、「従来の」mongoコマンドラインクエリ構文もパイプラインに似ています。

db.myCollection.find({
  field: 'value'
}).filter({
  ...
}).forEach({
  ...
})
  1. 内部での実装に違いはありますか?
  2. 「従来の」構文もパイプラインのようなものです。なぜ代替構文が存在するのでしょうか。
4

1 に答える 1

3

内部での実装に違いはありますか?

たくさん。たとえば、最初の1つは集約フレームワークとしてC ++コードのMongoDB内で実行され、もう1つはバンドルされたJSコンソール内のV8 / spidermonkey(バージョンによって異なります)環境内で実行されます。

後者の構文は、MongoDBの「内部」ではなく、JSドライバーを介してMongoDBと対話する機能を備えたJSコンソールを実行することをお伝えしておきます。

これは、MySQLコンソールや他の多くのデータベースなどのほとんどのデータベースに当てはまります。これらは、バンドルされたクライアント側のプログラムです。

「従来の」構文もパイプラインのようなものです。なぜ代替構文が存在するのでしょうか。

コンソールはMongoDBではないためです。

于 2013-03-18T18:46:31.967 に答える