1 回答

TA貢獻1811條經驗 獲得超6個贊
了解存儲在數據庫中的對象的外觀會有所幫助,但是無論如何我都會嘗試回答這個問題。
我可以看到2個問題。
您查詢不正確
您需要使用javascript的異步特性:)
1.錯誤的mongo過濾
您似乎沒有以find正確的順序向方法提供參數,并且實際上并沒有告訴mongo按任何內容進行過濾。
mongodb find方法的第一個參數是過濾器對象。這應該正確過濾:
db.collection('one').find({field:1, name: 0}).toArray((err,
data.forEach(val => collectionOneArr.push(val))
});
2.異步問題
readyForCompute例如,我們可以使用一個標志來確保僅compute在兩個數據庫查詢完成后才運行該方法。這是一個非常原始的解決方案,無法很好地擴展,但僅執行兩個查詢就足夠了。
let readyForCompute = false;
let arr1 = [];
let arr2 = [];
let db = client.db('job');
db.collection('one').find({name: "value_to_filter_name_field_by"}).toArray((err, data) => {
arr1 = data;
if (readyForCompute) compute();
readyForCompute = true;
});
db.collection('two').find({}).toArray((err,data) => {
arr2 = data;
if (readyForCompute) compute();
readyForCompute = true;
});
function compute() {
client.close();
console.log(arr1);
console.log(arr2);
// do your computation...
}
添加回答
舉報