ПРИМЕЧАНИЕ: Современные релизы Mongoose поддерживают .bulkWrite()
непосредственно на методах модели. Предпочтительно использовать этот метод даже при непосредственных реализациях API MongoDB, поскольку он фактически «безопасно понижает» для использования «индивидуальных вызовов» для методов, предоставляемых в пакете, в случаях, когда подключение к версии MongoDB, которая не поддерживает " Bulk API ".
Он по-прежнему вызывает те же основные «массовые методы», что и описано, но программное обеспечение принимает решение о том, как правильно отправить сервер, чем ваш собственный код, необходимый для принятия этого решения.
Также обратите внимание:, что текущие релизы мангуста теперь требуют вас .connect()
таким образом, это означает, что соединение должна быть решена перед другими действиями по-прежнему. Использование новых механизмов подключения гарантирует, что аксессоры, такие как .collection
, описанные ниже, всегда присутствуют при их вызове.
Вы можете сделать это, но проблема заключается в том, что при обращении к основной объект коллекции от базового драйвера одни и те же меры предосторожности не будут приняты, как и внедренных методов мангуст модели.
Все методы модели обертывают базовые методы другими функциями, но наиболее распространенным является то, что соединение с базой данных открыто, прежде чем пытаться получить доступ к этому методу. Это гарантирует, что Db
экземпляр присутствует и Collection()
объект может быть получен
После того, как вы используете .collection
аксессор на модели, то вы делаете все это по своему усмотрению:
mongoose.connection.on('open',function(err,conn) {
// now it's safe to use
// { .. } Other code
var bulk = Person.collection.initializeOrderedBulkOp();
bulk.find(query).update(update);
bulk.execute(callback)
});
или какой-либо другой метод что в основном гарантирует, что соединение действительно установлено.
Что касается встроенной поддержки методов Bulk API без погружения в базовый уровень драйвера, да, в настоящее время это работает в настоящее время. Но вы все равно можете реализовать его самостоятельно, и он не будет нарушать код, если вы подключаетесь к экземпляру сервера MongoDB 2.6 или выше.
@ bikash Если у вас есть другой вопрос, тогда [Задайте другой вопрос] (http://stackoverflow.com/questions/ask). Это объясняет причины «почему» «специальные методы для водителя» не срабатывают и как их убедиться. Все методы mongoose 'Model' фактически проверяют, должна ли база данных быть подключена до ее выпуска, а затем« очереди »до тех пор, пока она фактически не будет выполнена. –