gpt4 book ai didi

c# - 将数据上传到 Mongolab 数据库

转载 作者:太空宇宙 更新时间:2023-11-03 10:45:18 26 4
gpt4 key购买 nike

我正在尝试使用 C# 将元素插入到 MongoLab 数据库(沙盒计划)中(通过解析 xml 文件,但这不是相关部分)。

    var connectionString = "mongodb://user:pass@ds011111.mongolab.com:11111/db";
var server = client.GetServer();
var database = server.GetDatabase("mydb");
var elementCollection = database.GetCollection<Entity>("entities");
XmlDocument doc = new XmlDocument();
doc.LoadXml(elementxml);
XmlNodeList elementList = doc.GetElementsByTagName("element");
foreach (XmlNode element in elementList)
{
var t = new Entity();
t.Name = element.FirstChild.InnerText;
elementCollection.Insert(t); // this causes the error below
}

这是我收到的消息:

WriteConcern detected an error 'not authorized for insert on mydb.entities'. (Response 
was { "err" : "not authorized for insert on mydb.entities", "code" : 16544, "n" : 0,
"lastOp" : { "$timestamp" : NumberLong(0) }, "connectionId" : 33932414, "ok" : 1.0 }).

如果我在本地主机上运行相同的代码,一切都会按预期工作

如果我使用 mongo/shell 插入一个元素,我得到 Cannot use commands write mode, degrading to compatibility mode,但它有效

这是否意味着我无法使用数据(来自 C#)填充我的 mongolab 数据库,因为我没有 Sandbox 用户的正确权限?如果是这样,我有什么选择?

最佳答案

问题似乎是您正在对“db”数据库进行身份验证,但试图使用“mydb”数据库。除了特殊权限/管理员用户,大多数用户只能访问一个数据库,因此出现未授权错误。我们在运行所有数据库时都启用了身份验证,而您可能在本地使用的 MongoDB 默认值不需要身份验证;这就是您在本地看不到问题的原因。

您应该从 URI 中获取要使用的数据库。这是一个 example来 self 们的 Language Center .

  // Standard URI format: mongodb://[dbuser:dbpassword@]host:port/dbname

String uri = "mongodb://user:pass@host:port/db";

MongoUrl url = new MongoUrl(uri);
MongoClient client = new MongoClient(url);
MongoServer server = client.GetServer();
MongoDatabase db = server.GetDatabase(url.DatabaseName);

如果这不能解决您的问题,请尝试我们的 connectivity troubleshooting guide .具体来说,接下来我要看的是您是否使用了正确的凭据(请参阅标题为“检查您的数据库凭据”的部分)。

最后,如果您仍然遇到问题或有任何其他问题,请随时通过 support@mongolab.com 与我们联系。

关于c# - 将数据上传到 Mongolab 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23686059/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com