我在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驱动程序.
谢谢
我正在实现一个nodejs服务器,它使用mongodb作为数据库和mongodb-native库来连接它.
此外,我正在使用群集来增强服务器性能.因此,有两种方法可以使用mongodb-native驱动程序的连接池;
所以,我的问题是,其中两个中最好的方法是什么?或者还有其他好的方法吗?
我的 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)
这里有哪些相当容易实现的缓存解决方案?
我有一个使用几个组的 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
我有一个 NodeJS 应用程序(使用 node-mongodb-native 驱动程序版本 2.1),它执行以下操作:
stream()游标对象上的函数来流式传输结果。一切都按预期进行 - 文档已成功上传到我的 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) (交叉发布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.me与IP-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。
请让我知道我的分析是否正确以及我们是否知道解决该问题的方法。
我正在学习使用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
我们正在尝试使用 nodejs/mongo-native 驱动程序来实施以下演示文稿(幻灯片 13-18)中概述的策略。
总之:
我能够使用 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
我的项目(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) 我收集了products近 10 万份带有名字的文档。我想引入一个新的密钥,称为 在所有文档中secondaryKey具有唯一值。uuid我使用nodejs.
我面临的问题:-
当我尝试以下查询时,
db.collection('products').updateMany({},{"$set":{secondaryKey: uuid()}});
Run Code Online (Sandbox Code Playgroud)
在这里它更新所有具有相同值的文档uuid,
我尝试使用循环来一一更新文档,但这里的问题是我没有filter价值,updateOne因为我想更新所有文档。
任何人都可以在这里帮助我吗?谢谢 :)