Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/26.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
C# 将JSON文件导入MongoDB_C#_Json_Mongodb_Json.net - Fatal编程技术网

C# 将JSON文件导入MongoDB

C# 将JSON文件导入MongoDB,c#,json,mongodb,json.net,C#,Json,Mongodb,Json.net,我在虚拟机上有一个MongoDB实例,可以使用Compass进行连接。我已经在虚拟机上使用命令行手动上传了一个JSON文件,没有问题。导入将创建两个文档,并使用命令行按预期工作: mongoimport --jsonArray --db Historian_ManyDocs --collection TagValues --file historianData1.json json在historianData1.json文件中具有以下格式: [ { "tagname": "

我在虚拟机上有一个MongoDB实例,可以使用Compass进行连接。我已经在虚拟机上使用命令行手动上传了一个JSON文件,没有问题。导入将创建两个文档,并使用命令行按预期工作:

mongoimport --jsonArray --db Historian_ManyDocs --collection TagValues --file historianData1.json
json在historianData1.json文件中具有以下格式:

[
    {
      "tagname": "99CalcTrigger",
      "engunits": "",
      "value": "2",
      "quality": "Good NonSpecific",
      "timestamp": "2018-12-13T10:45:05Z"
    },
    {
      "tagname": "Blank",
      "engunits": "",
      "value": "0",
      "quality": "Good NonSpecific",
      "timestamp": "2018-12-13T10:45:00Z"
    }
]
我想在某种程度上自动化这个过程,我一直在使用c来实现这一点,使用以下代码:

    string line;
    using (StreamReader reader = new StreamReader(@"C:\historianData1.json")){
        line = reader.ReadLine();
    }


    var client = new MongoClient("mongodb://mongoserverIP:27017");
    var database = client.GetDatabase("Historian_ManyDocs");
    dynamic array = Newtonsoft.Json.JsonConvert.DeserializeObject(line);
    foreach (var item in array)
    {
        var document = BsonSerializer.Deserialize<BsonDocument>(item);
        var collection = database.GetCollection<BsonDocument>("TagValues");
        await collection.InsertOneAsync(document);
    }
此错误与var文档行上的以下错误相同,错误如下:

Microsoft.CSharp.RuntimeBinder.RuntimeBinderException:'最佳 重载方法匹配 'MongoDB.Bson.Serialization.BsonSerializer.DeserializeMongoDB.Bson.BsonDocument, 系统.行动' 有一些无效的参数'

有人能提供一些建议吗?我已经讨论了4个小时了。

你必须在MonngoDB中插入一个类,所以请像这样创建它:

public class POCOData
{
  public string tagname;
  public string engunits;
  public string value;
  public string quality;
  public TimeOffset timestamp;
}
在反序列化中使用它之后:

foreach (var item in array)
{
    var document = BsonSerializer.Deserialize<POCOData>(item);
    var collection = database.GetCollection<BsonDocument>("TagValues");
    await collection.InsertOneAsync(document);
}