不在具体的“猫鼬”中,或者至少在撰写时尚未。从2.6版本开始,MongoDB shell实际上“在幕后”
使用了“批量操作API
”,就像所有常规辅助方法一样。在其实现中,它首先尝试执行此操作,如果检测到较旧版本的服务器,则对旧版实现会有“退路”。
所有的猫鼬方法“当前”都使用“传统”实现或写关注响应和基本的旧方法。但是
.collection,任何给定的猫鼬模型都有一个访问器,该访问器实际上是从底层的“节点本机驱动程序”中访问“集合对象”,而在该节点上本身实现了猫鼬:
var mongoose = require('mongoose'), Schema = mongoose.Schema; mongoose.connect('mongodb://localhost/test'); var sampleSchema = new Schema({},{ "strict": false }); var Sample = mongoose.model( "Sample", sampleSchema, "sample" ); mongoose.connection.on("open", function(err,conn) { var bulk = Sample.collection.initializeOrderedBulkOp(); var counter = 0; // representing a long loop for ( var x = 0; x < 100000; x++ ) { bulk.find().upsert().updateOne( }); counter++; if ( counter % 1000 == 0 ) bulk.execute(function(err,result) { bulk = Sample.collection.initializeOrderedBulkOp(); }); } if ( counter % 1000 != 0 ) bulk.execute(function(err,result) {// maybe do something with result }); });最主要的收获是“猫鼬方法”实际上知道可能尚未真正建立连接,并在完成之前“排队”。您正在“挖掘”的本机驱动程序没有这种区别。
因此,您确实必须意识到以某种方式或形式建立了连接。但是您可以使用本机驱动程序方法,只要您对所做的事情保持谨慎即可。



