2016-12-16 53 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,從那時起你的光標解決方案就可以工作)。