2016-05-04 4 views
2

これらのクエリに違いはありますか?私はmongoがマップメソッドに渡されたjavascriptコードを、クエリが解決したときのマッピングとどう解釈するのか不思議です。cursor.map()。toArray()とcursor.toArray()。then(array => array.map())

db.collection('myCollection').find() 
.map(document => document.value + 3) 
.toArray(); 

db.collection('myCollection').find() 
.toArray() 
.then(array => array.map(document => document.value + 3)); 

答えて

4

最初の例は、(内蔵JSランタイムを有する)のMongoDBサーバのコンテキスト内でマッピングが実行され、第二の例は、で、ローカルで実行しますノードプロセス。

.toArray()の位置がキーです。カーソルが使い果たされます。つまり、結果ドキュメントのセットがサーバーからクライアントに転送されます。

クライアントに転送その後、すべての文書をのでcursor.toArray().map()は、最初のクライアントにすべての文書を転送し、マッピングが発生し、cursor.map().toArray()は、サーバ上の各文書にマッピングを実行し、

関連する問題