Привет, я увидел ваш вопрос в списке рассылки node-mongodb-native . Я знаю, что вы можете сериализировать курсоры запросов в App Engine , но я не думаю, что вы можете сделать точный аналог в MongoDb. В Bigtable курсор, который получает клиент, является фактическим ключом последней строки, которая была отсканирована, тогда как в MongoDb курсор клиента является только 64-разрядным числом. Судя по документации MongoDb о тайм-аутах курсоров , на самом деле не рекомендуется держать курсоры отдельно для каждого пользователя, поскольку каждый выдающийся курсор занимает память базы данных.
Но если по какой-то причине вы все еще хотите использовать курсоры MongoDb, я думаю, что можно взломать cursor.js , но я не пробовал сам. Для клиента курсор - это не что иное, как 64-битный cursorId, и вы должны иметь возможность создать новый курсор для выдачи правильных запросов OP_GETMORE на сервер . Я думаю, что это будет выглядеть примерно так (не проверено!):
var cursorId = cursor.cursorId;
// ...
var cursor2 = new mongodb.Cursor(db, collection).limit(100);
cursor2.state = mongodb.Cursor.OPEN;
cursor2.cursorId = cursorId;
cursor2.toArray(function(err, results) {console.log(results);});