我的问题是以下哪项是阻止的,因此不推荐用于nodejs
db.collection("allinfo").find({somekey: "someval"}).each(function(err, item){ //we get each item.... });
db.collection("allinfo").find({somekey: "someval"}).toArray(function(err, allitems){ //we get whole array.... });
哪一个应该首选?何时?
答案 0 :(得分:0)
所以,真正的区别在于稀疏,而且非常依赖于你的情况。
db.collection("allinfo").find({somekey: "someval"})
这里的主要是^。 find
打开一个光标,这并不是那么重。它实际上非常快 - 下一部分,使用toArray
或each
都是读取光标。
根据我的经验,当结果的计数无效时,我使用each
- 我不需要它。当打开的游标的长度对于所讨论的算法至关重要时,或者如果我将其传递给处理数组的另一个函数,而不是处理每个单独项目的函数时,我使用toArray
。
这些项都没有阻塞,mongo在nodejs的异步事件循环中本机运行。您必须手动强制光标执行同步,这是不推荐的。