2017-08-04 34 views
0

JavaScriptループを使用してmongodbコレクションにデータを挿入したいとします。JavaScriptループを使用してmongodbにデータを挿入してください

2017-08-04T10:17:06.390+0200 E QUERY [thread1] TypeError: collection[i] is undefined : @(shell):2:9

私はMongoDBの中で実行すると、コマンドシェル:

var collection = db.DATA.find(); 
db.PARSED_DATA.insert(collection[0].folders); 
db.PARSED_DATA.insert(collection[1].folders); 
db.PARSED_DATA.insert(collection[2].folders); 

を私は期待どおりの結果を持っているし、まだ私ドン

var collection = db.DATA.find(); 

for (var i = 0; i < 3; i++) { 
     db.PARSED_DATA.insert(collection[i].folders); 
} 

私がエラーを持っている: はここに私のコードですなぜ私のforループがうまくいかないのかわかりません。

EDIT: 私はロボ3Tの内側にこれを実行すると、私は期待した結果を得る:

var collection = db.DATA.find().toArray(); 

for (var i = 0; i < 3; i++) { 
     db.PARSED_DATA.insert(collection[i].folders); 
} 

Result in Robo 3T

しかし、私は私が

mongo <myip>:27017 < db_parse.js 

で自分のbashのコード内でそれを実行します再度エラーを取得する

+0

**あなたのインデックスが範囲外ではないことを確認してください**。 'collection.length === 1'でも構いませんが、ループは' 3'になります。以下のように変更してください: 'for(var i = 0; i Hitmands

+0

あなたのループの前にあなたのコレクションに格納されているものを見てください:console.dir(collection); – Sergej

+0

前の投稿にデータを追加します。私はあなたの解決策を試みます。 – Guillaume

答えて

0

私は達成する私はこれらのコードに期待するものを作成するために:

db_parse.sh

mongo <myip>:27017 < db_parse.js 

db_parse.js

use <db_name> 

var collection = db.DATA.find(); 

while(collection.hasNext()){ 
     db.PARSED_DATA.insert(collection.next().folders); 
} 

私はthis MongoDBのマニュアルを使用しています。

関連する問題