Возможно ли повторить курсор mongo дважды?

Другими словами, есть ли способ перемотать его в начало?

ИЗМЕНИТЬ

Я использую оболочку mongo и pymongo.

3 ответа

Ruby API имеет метод rewind!, который делает именно то, что вы хотите.

Python API также имеет метод cursor.rewind().

PHP API также имеет метод cursor.rewind().

Однако ни API Java, ни С++ не имеют метода перемотки. Все можно найти на официальной странице API .


Вы можете использовать cursor.reset();

Для PHP: $cursor->reset();

затем запустите ваш foreach($cursorData as $data) в любое время после сброса.


Курсор в pymongo имеет метод .rewind(), вы можете ссылаться на пример кода из предыдущего вопроса с ответом, который применяется.

Собственная оболочка mongo api, однако, не предоставляет такой метод, см. метод help() в прототипе объекта DBQuery.:

> db.collection.find().help()
find() modifiers
 .sort( {...} )
 .limit( n )
 .skip( n )
 .count() - total # of objects matching query, ignores skip,limit
 .size() - total # of objects cursor would return, honors skip,limit
 .explain([verbose])
 .hint(...)
 .showDiskLoc() - adds a $diskLoc field to each returned object
Cursor methods
 .forEach( func )
 .map( func )
 .hasNext()
 .next()

licensed under cc by-sa 3.0 with attribution.