Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mongodb MongoError:不允许用户执行操作_Mongodb_Angular_Loopback - Fatal编程技术网

Mongodb MongoError:不允许用户执行操作

Mongodb MongoError:不允许用户执行操作,mongodb,angular,loopback,Mongodb,Angular,Loopback,我使用MongoDB Atlas作为我的数据库 我使用angular4和环回作为api 我的应用程序可以很好地连接到数据库。但是,当我尝试获取数据时,会出现以下错误(我已将我的dbname替换为dbname): 如果我在AWS上使用本地mongodb客户机或mongodb实例,查询工作正常。但是,当使用atlas时,我会出现这个错误。我自己也有同样的错误 如果您使用的是MongoDB NodeJS驱动程序的v.3.0,请参阅MikaS post以了解需要进行的MongoClient.conne

我使用MongoDB Atlas作为我的数据库

我使用angular4和环回作为api

我的应用程序可以很好地连接到数据库。但是,当我尝试获取数据时,会出现以下错误(我已将我的dbname替换为dbname):


如果我在AWS上使用本地mongodb客户机或mongodb实例,查询工作正常。但是,当使用atlas时,我会出现这个错误。

我自己也有同样的错误

  • 如果您使用的是MongoDB NodeJS驱动程序的v.3.0,请参阅MikaS post以了解需要进行的MongoClient.connect更改。

  • 要将应用程序连接到Atlas MongoDB,请使用3.4驱动程序

    mongodb://<USERNAME>:<PASSWORD>@cluster0-shard-00-00-
    rb899.mongodb.net:27017,cluster0-shard-00-01-
    rb899.mongodb.net:27017,cluster0-shard-00-02-
    rb899.mongodb.net:27017/<DBNAME>?ssl=true&replicaSet=Cluster0-shard-
    0&authSource=admin
    
    mongodb://:@cluster0-shard-00-00-
    rb899.mongodb.net:27017,cluster0-shard-00-01-
    rb899.mongodb.net:27017,cluster0-shard-00-02-
    rb899.mongodb.net:27017/?ssl=true&replicaSet=Cluster0碎片-
    0&authSource=admin
    

如果您在Node.js上使用的是v3.0 mongodb,则应使用如下新API,并使用驱动程序3.4及更早版本的mongodb Atlas URI连接字符串:

MongoClient.connect(uri, function(err, client) {
  console.log("Connected successfully to server");

  const db = client.db(dbName);
});

在Atlas集群中,选择
Security
选项卡,按下按钮
Edit
,然后向用户添加角色
readWriteAnyDatabase
。请重试或刷新连接以查看结果。

啊!这花了太多的时间来修复!对于那些有同样问题的人。我必须同时做这两件事:


1> 我有这个错误,我的问题是在处理连接字符串时没有将数据库名称从“test”更改为我自己的数据库梅尔12月8日17时12分

2>

“mongodb://:@cluster0-shard-00-00- rb899.mongodb.net:27017,cluster0-shard-00-01- rb899.mongodb.net:27017,cluster0-shard-00-02- rb899.mongodb.net:27017/?ssl=true&replicaSet=Cluster0碎片- 0&authSource=admin“

此外,在Atlas中,您必须指定较旧的驱动程序2.2.12或更高版本。在做了这些事情之后,它终于起作用了

谢谢大家


对于获得
的任何人,不允许用户在[admin.]上执行操作[getLog]
错误。必须明确地给用户
clusterMonitor
角色

确保将用于从Mongo CLI连接到DB的IP列入白名单。在“项目网络访问”选项卡下执行此操作。

我通过直接获取集合对象并对其执行查找(和其他操作)来解决此问题:


我也有同样的问题,我是如何解决的: 确保添加了正确的MongoDB URL: . 转到群集-连接 . 选择“连接您的应用程序”
. 复制Url(不要忘记填写您的MongoDB密码)

我出现了这个错误,我的问题是在处理连接字符串时,我没有将数据库名称从“test”更改为我自己的数据库。您解决了这个问题吗?您为我节省了大量寻找解决方案的时间。非常感谢您最后用清晰的语言回答了一些需要做的事情!我使用的是shell 3.6或更高版本的命令
MongoClient.connect(uri, function(err, client) {
  console.log("Connected successfully to server");

  const db = client.db(dbName);
});
try {
  mongoose.connect(MONGODB_URI, options)
  const db = mongoose.connection
  db.on("error", console.error.bind(console, "connection error:"))
  db.once("open", async () => {
    console.log("we're connected!")

    const collectionObj = db.collection(ATLAS_COLLECTION)

    const result = await collectionObj.find({}).toArray()
    console.log(result)
}) } catch (error) { console.log({ error }) }