标签: mongodb-atlas

将laravel jenssegers连接到mongodb atlas集群

我从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).

我错过了什么吗?

php mongodb laravel jenssegers-mongodb mongodb-atlas

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

如何在我的 Macbook Air 上通过 Python 3.6 连接到 MongoDB Atlas 而没有 SSL 握手错误?

我已经设置了一个测试 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. …

macos ssl mongodb pymongo mongodb-atlas

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

Atlas MongoDB 连接

我正在尝试使用以下 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)

node.js express mern mongodb-atlas

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

使用 PyMongo 的 MongoDB Atlas 出现 ServerTimeoutError(运行设置代码)

我正在运行 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

python mongodb mongodb-atlas

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

在 atlas 云中运行的 mango db 上强制关闭连接

我有一个通过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 中找到任何重启选项

mongodb mongodb-atlas

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

使用 Robo 3T 连接到 MongoDB Atlas 时如何修复 SSL 隧道故障

我正在尝试按照以下说明使用 Robo 3T 连接到 MongoDB Atlas 数据库:

https://mrvautin.com/connecting-to-mongodb-atlas-with-robo-3t/

我收到如下所示的 SSL 隧道故障消息:

机器人3T错误

我已经验证我可以使用 Mongo shell 从命令行连接到这个数据库:

Mongo 外壳连接

因此,我的防火墙或白名单设置似乎不是问题。(对于此数据库,白名单允许来自任何 IP 地址的传入连接。)

我曾尝试在 Robo 3T 中同时使用“直接连接”和“副本集”作为“类型”,但每次都出现相同的错误。

我非常有信心提供正确的用户名和密码。

如何诊断和解决此问题?

mongodb mongodb-atlas robo3t

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

MongoDB Atlas Profiler:什么是“Num Yields”?

在 MongoDB Atlas 仪表板查询分析器中,有一个 Num Yields 字段。它是什么?

截屏

mongodb mongodb-atlas

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

如何将一个 Mongodb 云项目的所有数据复制到另一个项目?

我在 cloud.mongodb.com 上有两个项目。一个用于舞台,另一个用于制作。

我需要快速将登台与生产同步以进行调试。只需擦除舞台上的所有内容并用生产数据填充即可。我怎么做?

尝试 mongomirror,但似乎要求集群层相同。我想继续在舞台上使用免费层,在生产上使用更大的层。

mongodb mongodb-atlas

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

如何在 Mongoose 中设置数据库名称和集合名称?

我正在构建一个连接到 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)

mongoose node.js mongodb-atlas

3
推荐指数
4
解决办法
4227
查看次数

Vercel 为每个请求创建新的数据库连接

我正在开发一个新网站,虽然我们在本地开发时一切正常,但当我们尝试在 Vercel 上部署时遇到了问题。该应用程序为页面和 API 使用 Sapper 框架,以及我们通过 Mongoose 访问的 MongoDB Atlas 中的数据库。我们在本地的行为是我们建立npm run dev了一个单一的数据库连接,该连接一直持续到我们关闭应用程序。

本地日志

但是,当它被部署到 Vercel 时,建立数据库连接并打印“数据库连接成功”消息并且只应该运行一次的代码会在每个 API 请求上运行

每个请求的新数据库连接

这似乎很快就失控了,达到了我们数据库 500 个连接的限制: 数据库连接达到限制

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

我们的实现是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)

mongoose mongodb mongodb-atlas vercel sapper

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