Node.js mongodb.collection.find({})没有超过.limit(101)的操作
节点mongodb版本2.0.43和mongodb外壳版本3.2.5 centos虚拟机 我有一个1600个文档(没有封顶)的集合(不是很大),它们都有标准的BSON\U ID 如果我这样做Node.js mongodb.collection.find({})没有超过.limit(101)的操作,node.js,mongodb,Node.js,Mongodb,节点mongodb版本2.0.43和mongodb外壳版本3.2.5 centos虚拟机 我有一个1600个文档(没有封顶)的集合(不是很大),它们都有标准的BSON\U ID 如果我这样做 db.collection('docs').find({}).limit(100).toArray(function(e,r){console.log('done');}); 我等待大约1/2秒的结果 但是,如果我这样做了 db.collection('docs').find({}).toArray(fu
db.collection('docs').find({}).limit(100).toArray(function(e,r){console.log('done');});
我等待大约1/2秒的结果
但是,如果我这样做了
db.collection('docs').find({}).toArray(function(e,r){console.log('done');})
我在这里坐了5-10分钟,然后放弃
因此,我将限制设置为200(期望结果为x2,限制为100,但它从未出现) 接下来,我缩小了范围,尝试限制150101110105103102 并发现结果在101极限后停止 这似乎毫无用处,对我来说是个真正的问题 如果
limit(200)
花费了两倍的时间,那么我会说这是我查询中的一个性能问题,但它只是挂起,101个结果非常不令人满意一个糟糕的假设:更不用说我即时担心,如果任何查询有超过100个项目需要查看,我的应用程序在任何时候都可能挂起)
每个医生看起来都是这样
{
"_id": "578eaa1ae642785679cd98b0",
"linkid": "12633170",
"advertisercid": "4612127",
"websitename": "Car Rental 8",
"destinationurl": "https://www.carrental8.com/en/",
"who": "8027061-12633170-1467924618000",
"href": "http://www.tkqlhce.com",
"src": "http://www.awltovhc.com",
"r1": 3,
"r2": 44,
"r3": 24,
"r4": 58
}
另一个假设:我认为对一个没有完成的查询不起作用
同样让我感到非常奇怪的是,查询速度并没有真正下降到101,然后什么也没有
为什么查询永远挂起,而不是变慢
mongodb.log没有显示任何错误
尝试了db.command({profile:1,slowms:10})代码>就在查找
之前,但似乎没有出现任何配置文件
yum-update-mongodb-org虽然进行了更新,但没有做任何更改:mongodb-org-server、mongodb-org-mongos、mongodb-org-shell和mongodb-org-tools
将完全相同的集合复制到专用服务器上
它在那里工作,而不是在虚拟机上
在挂起之前(蓝色)和挂起之后(红色),虚拟机的内存都被截屏,但我看不到有什么大的变化
将这两行添加到/etc/security/limits.conf
root soft nofile 10000
root hard nofile 10000
也试过
重新启动服务器并启动mongod,但没有更改 由Mongodb工作人员(Christian Amor Kvalheim)成员建议升级修复
npm install mongodb@2.2.4
我可以在您的模式或查询中看到任何不同之处,但我怀疑console.log()
您是否可以删除控制台日志并尝试一次100多条记录您正在运行的MongoDB服务器版本是什么?MongoDB shell版本:3.2.5看起来与您的查询没有关系。为了理解这个问题,您可以在find查询中添加一些条件,比如db.docs.find({“r1”:3}).limit(somenumber).toArray()@ClementAmarnath,在调试问题之后放入控制台.log
。它显示find
未完成,因此console.log
从不激发。你那样想真奇怪。