我从Mongodb地图集开始,我试图将我的laravel/jenssegers项目连接到集群我配置我的conf /数据库
'mongodb' => [
'driver' => 'mongodb',
'host' => env('DB_HOST'),
'port' => env('DB_PORT', '27017'),
'database' => env('DB_DATABASE'),
'username' => env('DB_USERNAME'),
'password' => env('DB_PASSWORD'),
'options' => [
'database' => 'admin' // sets the authentication database required by mongo 3
]
],
Run Code Online (Sandbox Code Playgroud)
还有我的.env文件
DB_HOST="xxxx-shard-00-00-uggj0.mongodb.net"
DB_PORT=27017
DB_DATABASE=xxx
DB_USERNAME=xxx
DB_PASSWORD=xxx
Run Code Online (Sandbox Code Playgroud)
我得到这个错误
找不到合适的服务器(
serverSelectionTryOnce设置):[连接已关闭,在'xxxx-shard-00-00-uggj0.mongodb.net:27017'上调用ismaster
我没有问题就与Mongodb Compass冷漠相处.
我的Atlas Ip白名单是开放的(0.0.0.0/0).
我错过了什么吗?
我已经设置了一个测试 MongoDb Atlas 帐户,只是其中一个免费帐户,并且在我的 Ubuntu 机器上使用以下代码我可以成功创建用户并搜索它们。
当我在 MacBook Air 上尝试完全相同的事情时,我得到了如下所示的 SSL 握手。
pymongo.errors.ServerSelectionTimeoutError: SSL 握手失败: [SSL: CERTIFICATE_VERIFY_FAILED] 证书验证失败 (_ssl.c:833),SSL 握手失败: [SSL: CERTIFICATE_VERIFY_FAILED] 证书验证失败 (_ssl.c:833),SSL 握手失败[SSL: CERTIFICATE_VERIFY_FAILED] 证书验证失败 (_ssl.c:833)
import pymongo
client = pymongo.MongoClient("mongodb+srv://MYUSERNAME:MYPASSWORD@cluster0-ABCDEF.mongodb.net/test")
db = client.johnny
collection = db.myjohnnytest
example = {'name' : 'Johnny',
'email' : 'johnny@test.net'}
user_id = collection.insert_one(example).inserted_id
Run Code Online (Sandbox Code Playgroud)
我发现这个答案似乎是关键:
但是我已经尝试过这个,无论我是完全遵循它还是激活我的 virtualenv,我都会收到以下错误:
找不到激活的 virtualenv(必需)。回溯(最近一次调用):文件“”,第 44 行,文件“”,第 25 行,主文件“/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/subprocess.py” ,第 291 行,在 check_call 中引发 CalledProcessError(retcode, cmd) subprocess.CalledProcessError: Command '['/Library/Frameworks/Python.framework/Versions/3.6/bin/python3.6', '-E', '-s' , '-m', 'pip', 'install', '--upgrade', 'certifi']' 返回非零退出状态 3. …
我正在尝试使用以下 URI 连接到 Atlas MongoDB(由 mongodb 连接字符串提供)
module.exports = {
mongoURI:'mongodb+srv://<user>:<password>@cluster0-un6sk.mongodb.net/test?
retryWrites=true'
};
//connect to mongoose
mongoose
.connect(db)
.then( ()=>console.log('mongoDB connected'))
.catch(err => console.log(err));
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
{ MongoNetworkError: connection 3 to cluster0-shard-00-00-un6sk.mongodb.net:27017 closed
at TLSSocket.<anonymous> (C:\Users\KARTIT Ismail\Desktop\devconnector\node_modules\mongodb-core\lib\connection\connection.js:352:9)
at Object.onceWrapper (events.js:273:13)
at TLSSocket.emit (events.js:182:13)
at _handle.close (net.js:606:12)
at TCP.done (_tls_wrap.js:386:7)
name: 'MongoNetworkError',
errorLabels: [ 'TransientTransactionError' ],
[Symbol(mongoErrorContextSymbol)]: {} }
Run Code Online (Sandbox Code Playgroud) 我正在运行 MongoDB 的起始代码,尝试连接到我刚刚在 MongoDB Atlas 中设置的集群。我收到服务器选择超时错误。
我在 MongoDB 故障排除文档中找不到有关此问题的任何内容。
client = pymongo.MongoClient(
"mongodb+srv://USR:PWD@cluster0-eoik8.mongodb.net/test?retryWrites=true&w=majority")
db = client.admin
pprint(db.command("serverStatus"))
Run Code Online (Sandbox Code Playgroud)
我已经正确编码了 URL(使用在线 URL 编码服务)。
错误是
pymongo.errors.ServerSelectionTimeoutError: connection closed,connection closed,connection closed
我有一个通过atlas 云产品托管在 AWS 上的 mango db 集群。问题:我陷入了这样一种情况:我有空闲/陈旧的连接连接到我的集群,而且我似乎无法摆脱它们。
连接数为 98,我的层允许只有 100。
我确实有能力通过 Mango Shell 或其他工具连接到这个集群,但我似乎找不到重启服务或强制关闭连接的方法。
现在我无法访问底层容器或 VM,因此无法控制 mango 服务。
当我通过外壳连接时,我试过
db.runCommand( { killAllSessions: [ ] } )
Run Code Online (Sandbox Code Playgroud)
但这给了我
{
"ok" : 0,
"errmsg" : "CMD_NOT_ALLOWED: killAllSessions",
"code" : 8000,
"codeName" : "AtlasError"
}
我连接到 shell 的用户拥有最大权限 - 它是 atlasAdmin@admin 角色(我也尝试过使用 clusterMonitor@admin 角色)
我似乎也无法在芒果云管理器 Web UI 中找到任何重启选项
我正在尝试按照以下说明使用 Robo 3T 连接到 MongoDB Atlas 数据库:
https://mrvautin.com/connecting-to-mongodb-atlas-with-robo-3t/
我收到如下所示的 SSL 隧道故障消息:
我已经验证我可以使用 Mongo shell 从命令行连接到这个数据库:
因此,我的防火墙或白名单设置似乎不是问题。(对于此数据库,白名单允许来自任何 IP 地址的传入连接。)
我曾尝试在 Robo 3T 中同时使用“直接连接”和“副本集”作为“类型”,但每次都出现相同的错误。
我非常有信心提供正确的用户名和密码。
如何诊断和解决此问题?
在 MongoDB Atlas 仪表板查询分析器中,有一个 Num Yields 字段。它是什么?
我在 cloud.mongodb.com 上有两个项目。一个用于舞台,另一个用于制作。
我需要快速将登台与生产同步以进行调试。只需擦除舞台上的所有内容并用生产数据填充即可。我怎么做?
尝试 mongomirror,但似乎要求集群层相同。我想继续在舞台上使用免费层,在生产上使用更大的层。
我正在构建一个连接到 MongoDB-Atlas 的小程序。我创建了一个连接、一个架构、一个模型并创建了一个文档。但不知何故,我的数据库名称是“test”,集合名称是“users”,而我没有在代码或 Atlas 中定义它,这是默认名称吗?以及如何创建/重命名数据库和集合。
编码 :
用户.js
const mongoose = require('mongoose');
const SchemaObj = mongoose.Schema;
const userSchema = new SchemaObj({
name : {
type:String,
require:true
},
email : {
type:String,
require:true
},
password: {
type:String,
require:true
}
});
mongoose.model('User',userSchema);
Run Code Online (Sandbox Code Playgroud)
应用程序.js
const express = require('express');
const app = express();
const rout = express.Router();
const PORT = 8888;
const {connectionString} = require('./Keys');
const mongoose = require('mongoose');
app.use(express.json());
app.use(require('./routes/auth'));
app.get('/',(req,res)=>{
console.log('succesfully connected');
res.send('im in!');
});
let server = app.listen(PORT,'0.0.0.0',()=>{
let FuncPort = …Run Code Online (Sandbox Code Playgroud) 我正在开发一个新网站,虽然我们在本地开发时一切正常,但当我们尝试在 Vercel 上部署时遇到了问题。该应用程序为页面和 API 使用 Sapper 框架,以及我们通过 Mongoose 访问的 MongoDB Atlas 中的数据库。我们在本地的行为是我们建立npm run dev了一个单一的数据库连接,该连接一直持续到我们关闭应用程序。
但是,当它被部署到 Vercel 时,建立数据库连接并打印“数据库连接成功”消息并且只应该运行一次的代码会在每个 API 请求上运行
这似乎很快就失控了,达到了我们数据库 500 个连接的限制:

结果,在网站被一个用户短暂使用后,我们的一些 API 请求开始失败并出现此错误(我们让 db 接受任何连接而不是 IP 白名单,因此错误给出的建议没有帮助) :

我们的实现是mongoose.connect在 .js 文件中调用:
mongoose.connect(DB, {
useNewUrlParser: true,
useCreateIndex: true,
useFindAndModify: false,
useUnifiedTopology: true
}).then(() => console.log("DB connection successful!")).catch(console.error);
Run Code Online (Sandbox Code Playgroud)
然后我们import在 Sapper 的server.js. 我们能够找到的建议是“只缓存连接”,但这并没有成功,而且似乎更重要node-mongodb-native。无论如何,这是我们尝试过的,在本地没有更好或更糟的效果,但也没有解决 Vercel 上的问题:
let cachedDb = {};
exports.connection = async () => {
if (cachedDb.isConnected)
return;
try {
const …Run Code Online (Sandbox Code Playgroud)