标签: node-mongodb-native

如何使用native node.js驱动程序将用户名/密码连接到mongodb

我在Joyent云中使用本机mongo驱动程序,node.js应用程序在本地运行正常但在Joyent中,当我使用usrname/pswd运行它们提供它无法连接时.以下是用于连接的代码:

var db = new MongoDB(dbName, new Server('localhost', 27017 , {auto_reconnect: true}), {w: 1});
db.open(function(e, db){
if (e) {
    console.log(e);
} else{
    console.log('connected to database :: ' + dbName);
    //db.admin().authenticate('admin', '+(uihghjk', function(de , db){
    // if(e){
    //     console.log("could not authenticate");
    // }else {
    //console.log('connected to database :: ' + dbName);
    // }
    // });
}
});
Run Code Online (Sandbox Code Playgroud)

有没有人在Joyent中使用本机node.js驱动程序.

谢谢

node.js joyent node-mongodb-native

5
推荐指数
3
解决办法
2万
查看次数

对mongodb-native NodeJS中的每个子进程使用单个连接池进行集群与多个连接池

我正在实现一个nodejs服务器,它使用mongodb作为数据库和mongodb-native库来连接它.

此外,我正在使用群集来增强服务器性能.因此,有两种方法可以使用mongodb-native驱动程序的连接池;

  1. 创建单个连接池并在创建它们时将其传递给每个子进程(单例模式)
  2. 创建子进程后,在内部创建连接池

所以,我的问题是,其中两个中最好的方法是什么?或者还有其他好的方法吗?

mongodb node.js node-mongodb-native

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

向 Node.js MongoDB API 添加缓存?

我的 node.js API 对 MongoDB 运行一些昂贵的“组”查询,例如使用:

app.get('/group/:collection', function(req, res) {
    [...]
    db.collection("indicators").group(keys, conds, { value : 0 } [...]
Run Code Online (Sandbox Code Playgroud)

这里有哪些相当容易实现的缓存解决方案?

caching mongodb node.js node-mongodb-native

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

如何使用MongoDB聚合框架计算满足特定条件的组数?

我有一个使用几个组的 MongoDB 聚合操作:

{ $group: { "_id": { "vid": "$visitor_id", "pid":"$project.id" } } }
{ $group: { "_id": "$_id.vid", "count": { $sum: 1} } }
Run Code Online (Sandbox Code Playgroud)

返回以下数据:

{
  "results": [
    {
      "_id": "user1",
      "count": 1
    }, 
    {
      "_id": "user2",
      "count": 2
    },
    {
      "_id": "user3",
      "count": 1
    }
  ]
}
Run Code Online (Sandbox Code Playgroud)

我如何才能返回具有 1 个以上项目(count字段)的用户总数。在这种情况下,它将类似于:

{
  total: 1
}
Run Code Online (Sandbox Code Playgroud)

因为只有user21 个以上的项目(count> 1)。

我尝试添加以下组操作无济于事:

{ 
  $group: { 
    "_id": null, 
    count: {
      $sum: {$cond: [{$gt: ['$_id.count', 1]}, 1, 0]} …
Run Code Online (Sandbox Code Playgroud)

mongodb mongodb-query aggregation-framework node-mongodb-native

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

NodeJS 应用程序中 Mongo 连接流意外关闭

我有一个 NodeJS 应用程序(使用 node-mongodb-native 驱动程序版本 2.1),它执行以下操作:

  1. 打开与 MongoDB 的连接。
  2. 查询集合(batchSize 设置为 1000)。此查询返回大约 1,300,000 个文档,这些文档是我自己验证的。
  3. 由于文件太多,无法放入 bson 响应中(如果我没记错的话,大约 16mb),我使用stream()游标对象上的函数来流式传输结果。
  4. 我将 1000 个文档分批上传到我的 Amazon CloudSearch 索引。

一切都按预期进行 - 文档已成功上传到我的 AWS 服务,一切都很好。

但是,一旦传输了 85,000 个文档,流就会发出该end事件。它始终如一地执行此操作,并且不会引发任何错误。通常我会把这归因于超时之类的事情,但事实上,每次上传 85,000 个文档然后立即结束/关闭流时都会发生这种情况,这让我觉得出了什么问题。

我的代码如下:

var options = {
    socketTimeoutMS: 120000,
    connectTimeoutMS: 120000,
    keepAlive: 1
};
var url = "www.myMongoAddress.com";
mongo.connect(url, options, function(err, db) {
    var collection = db.collection('myCollection');
    var stream = collection.find({mySearch: 'criteria'}).batchSize(1000).stream();
    var batch = [];    
    var total = 0;

    stream.on('end', function() {
        console.log('stream …
Run Code Online (Sandbox Code Playgroud)

mongodb amazon-web-services node.js node-mongodb-native

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

MongoError:在副本集中找不到主节点(Mongoose用内部地址替换了gcloud上的外部IP地址)

(交叉发布https://github.com/Automattic/mongoose/issues/4834

这是mongodb - 3.4.0(来自docker的mongo:latest)的最新版本,并且我已经在Google计算引擎上安装了mongo集群。每个mongo服务器都有一个external和一个internal IP address

我可以使用相同的nodejs代码连接到各个mongo节点。但是,当我同时使用两个IP地址(mongodb:// IP-ADDR1,IP-ADDR2)时,出现“未找到主要错误”。

从看起来像的日志中,mongodb通过URL连接到每个服务器,并获取如下拓扑相关的数据结构(ismaster),

ismaster [{“ hosts”:[“ 10.60.4.5:27017","10。60.4.6:27017”],“ setName”:“ rs0”,“ setVersion”:4,“ ismaster”:false,“ secondary” :true,“ primary”:“ 10.60.4.5:27017","me":"10。60.4.6:27017”,“ lastWrite”:{“ opTime”:{“ ts”:“ 6367309576328445953”,“ t” :1},“ lastWriteDate”:“ 2016-12-23T14:53:07.000Z”},“ m axBsonObjectSize”:16777216,“ maxMessageSizeBytes”:48000000,“ maxWriteBatchSize”:1000,“ localTime”:“ 2016-12- 23T14:53:13.7 21Z“,” maxWireVersion“:5,” minWireVersion“:0,” readOnly“:false,” ok“:1}]]

在这里,它ismaster.meIP-ADDR用来调用connect命令的方式不同(ismaster.me是内部IP地址)。之后,mongo从种子列表中删除原始IP地址,如下所示:

[WARN-ReplSet:9532] 1482504793904由于其地址104.197.115.7:27017与其ismaster.me地址10.60.4.6:27017不匹配而删除了种子列表服务器{类型:'警告'

最后,结果为' no primary found in replicaset'

较长的日志详细信息发布在链接上-https://github.com/Automattic/mongoose/issues/4834

TIA。

请让我知道我的分析是否正确以及我们是否知道解决该问题的方法。

mongoose google-compute-engine node-mongodb-native

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

TypeError:Grid不是构造函数.Mongodb节点驱动程序

我正在学习使用mongdb gridfs和nodejs驱动程序.我第一步陷入困境.

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

MongoClient.connect("mongodb://localhost:27017/kkdb", function(err, db) {
   if(err) return console.log("error in connection:>>>>>>>>>>>>>>> ", err); 

   var grid = new Grid(db, 'fs');
   var buffer = new Buffer("Hello world");

   grid.put(buffer, {metadata:{category:'text'}, content_type: 'text'}, function(err, fileInfo) {
       if(!err) {
           console.log("Finished writing file to Mongo");
       }
   });
});
Run Code Online (Sandbox Code Playgroud)

当我运行此代码时,它显示错误:TypeError: Grid is not a constructor

mongodb node.js gridfs node-mongodb-native

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

多租户 MongoDB + mongo 原生驱动 + 连接池

我们正在尝试使用 nodejs/mongo-native 驱动程序来实施以下演示文稿(幻灯片 13-18)中概述的策略。

https://www.slideshare.net/mongodb/secure-mongodb-to-serve-an-awsbased-multitenant-securityfanatic-saas-application

总之:

  • 创建从node.js到mongodb的连接池。
  • 对于每个对租户的请求,从池中获取一个连接并对其进行“身份验证”。使用经过身份验证的连接来服务请求。响应后,将连接返回到池中。

我能够使用 mongo-native 驱动程序创建到 mongodb 的连接池,而无需指定任何数据库,如下所示:

const client = new MongoClient('mongodb://localhost:27017', { useNewUrlParser: true, poolSize: 10 });

但是,为了获取 db 对象,我需要执行以下操作:

const db = client.db(dbName);

这是我想要验证连接的地方,AFAICS,此功能已从更新的 mongo 驱动程序、node.js 和 java 中弃用/删除。

从演示来看,旧版本的 Java 驱动程序似乎可以做到这一点。

我是否可以使用单个连接池并使用相同的连接对各个数据库的租户进行身份验证?

我们的替代方案是为每个租户提供一个连接池,目前这对我们没有吸引力。

任何帮助将不胜感激,包括此功能被弃用/删除的原因。

connection-pooling multi-tenant mongodb node.js node-mongodb-native

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

ModuleNotFoundError:找不到模块:错误:无法解析“node_modules/mongodb/lib”中的“dns”

我的项目(NextJS)运行良好,突然我遇到了 ModuleNotFoundError 问题。特别是在 nextJs 的动态路由的情况下。

我的页面结构不工作 pages/programs/[programtype]/[program].jsx

"mongodb": "^3.5.9"

ModuleNotFoundError: Module not found: Error: Can't resolve 'dns' in 'node_modules/mongodb/lib'

ModuleNotFoundError: Module not found: Error: Can't resolve 'dns' in '/project-path/node_modules/mongodb/lib'
    at /project-path/node_modules/webpack/lib/Compilation.js:925:10
    at /project-path/node_modules/webpack/lib/NormalModuleFactory.js:401:22
    at /project-path/node_modules/webpack/lib/NormalModuleFactory.js:130:21
    at /project-path/node_modules/webpack/lib/NormalModuleFactory.js:224:22
    at /project-path/node_modules/neo-async/async.js:2830:7
    at /project-path/node_modules/neo-async/async.js:6877:13
    at /project-path/node_modules/webpack/lib/NormalModuleFactory.js:214:25
    at /project-path/node_modules/enhanced-resolve/lib/Resolver.js:213:14
    at /project-path/node_modules/enhanced-resolve/lib/Resolver.js:285:5
    at eval (eval at create (/project-path/node_modules/tapable/lib/HookCodeFactory.js:33:10), <anonymous>:13:1)
    at /project-path/node_modules/enhanced-resolve/lib/UnsafeCachePlugin.js:44:7
    at /project-path/node_modules/enhanced-resolve/lib/Resolver.js:285:5
    at eval (eval at create (/project-path/node_modules/tapable/lib/HookCodeFactory.js:33:10), <anonymous>:13:1)
    at /project-path/node_modules/enhanced-resolve/lib/Resolver.js:285:5
    at eval (eval at create (/project-path/node_modules/tapable/lib/HookCodeFactory.js:33:10), <anonymous>:25:1)
    at /project-path/node_modules/enhanced-resolve/lib/DescriptionFilePlugin.js:67:43
Run Code Online (Sandbox Code Playgroud)

mongodb npm node-mongodb-native next.js

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

Mongodb更新所有具有唯一id的文档

我收集了products近 10 万份带有名字的文档。我想引入一个新的密钥,称为 在所有文档中secondaryKey具有唯一值。uuid我使用nodejs.

我面临的问题:-

当我尝试以下查询时,

db.collection('products').updateMany({},{"$set":{secondaryKey: uuid()}});
Run Code Online (Sandbox Code Playgroud)

在这里它更新所有具有相同值的文档uuid

我尝试使用循环来一一更新文档,但这里的问题是我没有filter价值,updateOne因为我想更新所有文档。

任何人都可以在这里帮助我吗?谢谢 :)

mongodb node.js mongodb-query node-mongodb-native

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