我试图通过查询具有值数组的字段来从mongoDB打开数据流,并且每个数组索引只返回一条记录。
var cursor = Collection.findOne({'lastName': { $in: [arrayOfLastNames]}}).cursor();
cursor.on('data', function (record) {
//do something with record
})
无论出于何种原因,它都会为arrayOfLastNames的每个索引提取多个记录。 .findOne()方法表现为.find()。 任何关于为什么会发生这种情况的建议,或者对这种实现的可能替代方案都将不胜感激。
答案 0 :(得分:3)
因为您使用了游标而遇到了问题。从mongoDB documentation,“您无法将游标方法应用于findOne()的结果,因为返回了单个文档。”
从您的评论中,您想为数组中的每个项目调用printf()
一次,因为findOne
$in
会根据“natural order”找到第一个文档匹配数组中任何项目的文档(您可能也会认为只是诚实地使用通用findOne
,因为那时您的光标解决方案将起作用。)