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...
}
添加回答
举报