2017-08-04 48 views
0

我想用javascript循環在mongodb集合中插入數據。 這裏是我的代碼:使用javascript循環在mongodb中插入數據

var collection = db.DATA.find(); 

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

我有錯誤:

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); 

我預期的結果,我還是不要不明白爲什麼我的for循環不起作用。

編輯: 當我執行這個機器人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); 
} 

我使用MongoDB的this手冊。