2016-12-16 55 views
1

我试图通过查询一个字段的值的数组打开一个数据流从mongoDB,并且每个索引的数组返回一个记录。mongo游标findOne

var cursor = Collection.findOne({'lastName': { $in: [arrayOfLastNames]}}).cursor(); 

    cursor.on('data', function (record) { 
    //do something with record 
    })  

无论出于何种原因,它为arrayOfLastNames的每个索引提取多个记录。 .findOne()方法的行为与.find()相同。 有关为何发生这种情况的任何建议,或者对此实施的可能替代方案将不胜感激。

+0

为什么只用一个光标,当你只需要一个项目? – qqilihq

+0

@qqilihq我需要为arrayOfLastNames中的每个项目记录一条记录。光标的原因是因为数据量超过了内存。 –

回答

2

由于您使用了光标,因此遇到了问题。从mongoDB documentation开始,“由于返回单个文档,因此无法将游标方法应用于findOne()的结果。”

从你的评论,你要调用一次findOne为数组中的每一个项目,因为$infindOne将根据任何项目阵列中的匹配文件“natural order”找到的第一个文件(您也可以考虑只是诚实地使用一般的find,从那时起你的光标解决方案就可以工作)。