web-dev-qa-db-ja.com

JSONを既存のMongoDBコレクションに挿入します

私は私の間違いを理解しました:)みんなありがとう。もう1つ質問があります。「顧客」コレクションに、以下の構造の複数のドキュメントがあるとします。

_{
    "customerId":100,
    "FirstName":"xyz",
    "lastname":"pqr",
    "address":[
       {
          "house":44,
          "city":"Delhi",
          "country":"india"
       }
    ],
    "employer":[
       {
          "cmpName":"ABC",
          "type":"IT"
       }
    ]
_

}

今、私は以下のようなJSONファイルを持っています:

_{
    "customerId":100,
    "address":[
       {
          "house":99,
          "city":"MUMBAI",
          "country":"INDIA"
       }
    ]
 }
_

上記のJSONファイルをC#コードで使用してcustomerId = 100のアドレス配列を更新する方法を教えてください。

提案してください。!

前もって感謝します :)


私はmongoDBにJSONファイルを挿入するためのC#(Cシャープ)(。Net)コードを書いています。次のように、1つの行に複数のドキュメントがあるjsonfile "records.JSON"があります。

_[{"customerId" : 100,"FirstName" : "xyz","lastname" : "pqr","address":[{"house": 44,"city" : "Delhi", "country" : "india"}],"employer":[{"cmpName" : "ABC","type" : "IT"}]}][{"customerId" : 101,"FirstName" : "LMN","lastname" : "GHI","address":[{"house": 90,"city" : "NewYork", "country" : "US"}],"employer":[{"cmpName" : "ABC","type" : "IT"}]}]
_

このJSONファイルを既存のMongoDBコレクションに挿入する必要があります。これまでのところ、mongodbに接続して挿入するための次のコードがあります。

_public static void Main (string[] args)
        {
            var connectionString = "mongodb://localhost";    
            var client = new MongoClient(connectionString);
            var server = client.GetServer();
            server.Connect();
            var database = server.GetDatabase("test");
 var collection = database.GetCollection<BsonDocument>("test_collection");
            string text = System.IO.File.ReadAllText(@"records.JSON");
            var bsonDoc = BsonArray.Parse (text);
            collection.Insert (bsonDoc);
        }
_

しかし、これは私に次のようなエラーを与えています:「配列はBSONドキュメントのルートレベルに書き込むことができません」そして私がBSONを:var bsonDoc = BsonDocument.Parse (text);として解析すると、次のようにエラーが発生します:_Cannot deserialize BsonDocumet from BsonType Array._

誰かがJSONファイルをmongoDBコレクションに挿入する方法を理解するのを手伝ってください。 ??

どんな助けでもありがたいです..事前に感謝します。

7
darsh

有効なJSONファイルがあるとします。

これは、新しい MongoDB.Driver 2.0: を使用して行う必要があることです。

public static void Main (string[] args)
    {
        var connectionString = "mongodb://localhost";

        var client = new MongoClient(connectionString);
        var database = client.GetDatabase("test");  

        string text = System.IO.File.ReadAllText(@"records.JSON");

        var document = BsonSerializer.Deserialize<BsonDocument>(text);
        var collection = database.GetCollection<BsonDocument>("test_collection");
        await collection.InsertOneAsync(document);

    }

私はそれがあなたのために働くことを願っています!

よろしく。

16
Rafael Delboni

前の回答者が示唆したように、JSON形式は無効です。

JSONを次のようなバリデーターに渡すと: http://jsonformatter.curiousconcept.com/ 問題はここに示されている不要な括弧に関係していることがわかります。

[
     {
        "customerId":100,
        "FirstName":"xyz",
        "lastname":"pqr",
        "address":[
           {
              "house":44,
              "city":"Delhi",
              "country":"india"
           }
        ],
        "employer":[
           {
              "cmpName":"ABC",
              "type":"IT"
           }
        ]
     }
  ][ <-------------------- Delete these brackets
     {
        "customerId":101,
        "FirstName":"LMN",
        "lastname":"GHI",
        "address":[
           {
              "house":90,
              "city":"NewYork",
              "country":"US"
           }
        ],
        "employer":[
           {
              "cmpName":"ABC",
              "type":"IT"
           }
        ]
     }
  ]
2
Ahmed Haque