当前位置: 首页 > 面试题库 >

猫鼬是否允许并发多个数据库请求?

薛楷
2023-03-14
问题内容

我读过猫鼬每个集合最多只能打开一个连接,并且没有选择来更改它。

这是否意味着缓慢的mongo查询将使所有后续查询都等待?

我知道node.js中的所有内容都是非阻塞的,但是我想知道慢速查询是否会延迟所有后续查询的执行。以及是否有办法改变这一点。


问题答案:

如果使用mongoose.connect()的默认方法,则它仅使用一个连接。要解决此问题,您可以创建多个连接,然后将指向同一架构的模型绑定到该连接。

像这样:

var conn = mongoose.createConnection('mongodb://localhost/test');
var conn2 = mongoose.createConnection('mongodb://localhost/test');
var model1 = conn.model('Model', Schema);
var model2 = conn2.model('Model', Schema);
model1.find({long query}, function() {
   console.log("this will print out last");
});
model2.find({short query}, function() {
   console.log("this will print out first");
});

希望有帮助。

更新 嘿,确实有效。通过注释更新,可以使用createConnection创建连接池。它使您可以同时从同一模型执行多个查询:

var conn = mongoose.createConnection('mongodb://localhost/test', {server:{poolSize:2}});
var model = conn.model('Model', Schema);
model.find({long query}, function() {
   console.log("this will print out last");
});
model.find({short query}, function() {
   console.log("this will print out first");
});

更新2-2012年12月
现在这个答案可能有点过时了-
我注意到我一直在继续投票,所以我想我会更新它。猫鼬包装的mongodb本机驱动程序现在的默认连接池大小为5,因此您可能不需要在mongoose中显式指定它。



 类似资料:
  • 问题内容: 我正在做一个包含子项目的Node.js项目。一个子项目将拥有一个Mongodb数据库,Mongoose将用于包装和查询db。但是问题是 猫鼬不允许在一个猫鼬实例中使用多个数据库,因为模型建立在一个连接上。 要使用多个猫鼬实例,Node.js不允许使用多个模块实例,因为它在中具有缓存系统。我知道在Node.js中禁用模块缓存,但是我认为这不是一个好的解决方案,因为它只需要猫鼬。 我尝试使

  • 我发现的大部分stackoverflow结果都是用于序列化整个对象或反序列化的。我的一些想法… 是否可以从三个值字段中删除@SerializedName并只序列化不为null的值? 我是否可以在java中构建某种可选的数据类型对象,该对象基于具有值的数据类型进行设置? 这个对象是一个更大的对象的一部分,而subitems对象有一个相当大的深度,它只是一个注释。我希望这是一个重复的问题,我只是找不到

  • 问题内容: 在Firefox 3中,答案是每个域6个:触发对同一个域的第7个XmlHttpRequest(在任何选项卡上)时,它将排队等待,直到其他6个完成之一。 其他主要浏览器的数量是多少? 另外,是否有方法可以绕过这些限制而无需我的用户修改其浏览器设置?例如,对jsonp请求(使用脚本标记注入而不是XmlHttpRequest对象)的数量有限制吗? 背景:我的用户可以从网页向服务器发出XmlH

  • 我知道在最新版本的Mongoose中,您可以将多个文档传递给create方法,在我的例子中,甚至可以传递一个文档数组。 我的问题是数组的大小是动态的,所以在回调中创建一个对象数组会很有帮助。 文档中没有,但这样做可能吗?

  • 控制台中的打印项目有问题。来自数据库的日志或res.json。 我做错了什么 数据库产品的名称是:谢谢 错误:C:\Users\Turqus\Desktop\node\products\node\u modules\mongoose\lib\index。js:382扔新猫鼬。错误遗漏方案错误(姓名);^MongooseError:尚未为模型“product,productSchema”注册架构。使

  • 问题内容: 可以通过ADO.Net传递到Sql Server查询的参数限制为2,100,但是.Net开发人员使用的其他常见数据库的记录限制是什么-特别是我感兴趣的是: 甲骨文10g / 11g 的MySQL PostgreSQL的 Sqlite 有人知道吗? 问题答案: 甲骨文:64,000。资源 MySQL: 默认情况下,没有限制。MySQL的“文本协议”要求在将命令文本发送到服务器之前,.NE