相关疑难解决方法(0)

处理Mongodb连接的正确方法是什么?

我使用10gen的本机node.js驱动器一起尝试使用mongodb(2.2.2)的node.js.

起初一切都很顺利.但是当进入并发基准测试部分时,发生了很多错误.经常连接/关闭1000个并发可能会导致mongodb拒绝任何进一步的请求,如下所示:

Error: failed to connect to [localhost:27017]

Error: Could not locate any valid servers in initial seed list

Error: no primary server found in set
Run Code Online (Sandbox Code Playgroud)

此外,如果许多客户端在没有显式关闭的情况下关闭,则需要mongodb分钟才能检测并关闭它们.这也会导致类似的连接问题.(使用/var/log/mongodb/mongodb.log检查连接状态)

我已经尝试了很多.根据手册,mongodb没有连接限制,但poolSize选项似乎对我没有影响.

由于我只在node-mongodb-native模块中使用它,我不太确定最终导致问题的原因.其他语言和驱动程序的性能如何?

PS:目前,使用自维护池是我想出的唯一解决方案,但使用它无法解决副本集的问题.根据我的测试,副本设置似乎比独立的mongodb少得多.但不知道为什么会这样.

并发测试代码:

var MongoClient = require('mongodb').MongoClient;

var uri = "mongodb://192.168.0.123:27017,192.168.0.124:27017/test";

for (var i = 0; i < 1000; i++) {
    MongoClient.connect(uri, {
        server: {
            socketOptions: {
                connectTimeoutMS: 3000
            }
        },
    }, function (err, db) {
        if (err) {
            console.log('error: ', err);
        } else {
            var col = db.collection('test');
            col.insert({abc:1}, …
Run Code Online (Sandbox Code Playgroud)

mongodb node.js

21
推荐指数
1
解决办法
2万
查看次数

遍历由于太大而无法加载的整个 mongo 数据库的方法?

我必须为我公司的一位客户做一些数据处理。他们有一个大约有 4.7GB 数据的数据库。我需要为使用 mongo 文档和外部引用的两个属性计算的每个文档添加一个字段。

我的问题是,我不能执行 collection.find() 因为 Node.js 内存不足。遍历整个集合的最佳方法是什么,而该集合太大而无法通过单个调用来加载?

database mongodb node.js

2
推荐指数
1
解决办法
5235
查看次数

如何使用node和mongodb查找?

下面的数据存储在我的收藏中

[
{ "_id" : ObjectId("53d9feff55d6b4dd1171dd9e"),"name":"John", "rank":1, "year":1998 ,"class":"a" ,"total":"1128" },
{ "_id" : ObjectId("feff553d95d6b4dd19e171dd"),"name":"Sherif", "rank":1, "year":1999 ,"class":"b" ,"total":"1163"},
{ "_id" : ObjectId("9fef53dd6b4dd1171f55dd9e"),"name":"shravan", "rank":1, "year":2000 ,"class":"b" ,"total":"1113"},
{ "_id" : ObjectId("117153d9fef6b4dddd9ef55d"),"name":"aneesh", "rank":1, "year":2001 ,"class":"d" ,"total":"1145"},
{ "_id" : ObjectId("dd9e53feff55d6b4dd1171d9"),"name":"abdul", "rank":1, "year":1997 ,"class":"a" ,"total":"1100"},
]
Run Code Online (Sandbox Code Playgroud)

我写了api for find,[{ "name":"John", "rank":1, "year":1998 },{ "name":"Sherif", "rank":1, "year":1999 }]这是我从req.body得到的数据,我在这里作为查询提到

router.post('/users',function(req,res){
  var query =[{ "name":"John", "rank":1, "year":1998 },{ "name":"Sherif", "rank":1, "year":1999 }]
  User.find(query, function(err, result) {
    if (err) throw err;
    console.log(result);
    res.json(result)

  }); …
Run Code Online (Sandbox Code Playgroud)

node.js express

1
推荐指数
1
解决办法
121
查看次数

标签 统计

node.js ×3

mongodb ×2

database ×1

express ×1