MongoDB
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> MongoDB

Tuần tự hóa lớp phức hợp C # MongoDB

Tìm thấy cách lưu dữ liệu vào MongoDB tại đây: Chuyển đổi từ điển sang Bson Tài liệu bỏ qua trường _t và mở rộng nó một chút nên tôi nghĩ sẽ chia sẻ toàn bộ giải pháp.

Bước # 1:

Trong lớp của tôi, tôi đã khai báo 2 thành viên cho mỗi giá trị:

// For the Hobbies object type:
[BsonIgnore] //ignore this value in MongoDB
public Dictionary<string, object> Hobbies { get; set; }

[JsonIgnore] //ignore this value in the response on Get requests
[BsonElement(elementName: "Hobbies")]
public BsonDocument HobbiesBson { get; set; }

/*********************************************************************/

// For the Collection object type:
[BsonIgnore] //ignore this value in MongoDB
public List<Dictionary<string, object>> Collection { get; set; }

[JsonIgnore] //ignore this value in the response on Get requests
[BsonElement(elementName: "Collection")]
public BsonArray CollectionBson { get; set; }

Bước # 2

Trong phương thức bộ điều khiển WebAPI của tôi cho Post

[HttpPost]
public override async Task<IActionResult> Post([FromBody] Person person)
{
    var jsonDoc = JsonConvert.SerializeObject(person.Hobbies);
    person.HobbiesBson = BsonSerializer.Deserialize<BsonDocument>(jsonDoc);

    jsonDoc = JsonConvert.SerializeObject(person.Collection);
    person.CollectionBson = BsonSerializer.Deserialize<BsonArray>(jsonDoc);

    //save
}

Bước # 3

Trong Get của tôi yêu cầu tôi gỡ bỏ không hóa nó trở lại như thế này:

[HttpGet("{id?}")]
public override async Task<IActionResult> Get(string id = null)
{
    var people = //get data from mongoDB
    foreach (var person in people)
    {
        var bsonDoc = BsonExtensionMethods.ToJson(person.HobbiesBson);
        person.Hobbies = JsonConvert.DeserializeObject<Dictionary<string, object>>(bsonDoc);

        bsonDoc = BsonExtensionMethods.ToJson(person.CollectionBson);
        person.Collection = JsonConvert.DeserializeObject<List<Dictionary<string, object>>>(bsonDoc);bsonDoc);
    }
    return Ok(people);
}

Điều này đã giải quyết được vấn đề của tôi và tôi hy vọng nó cũng có thể giúp ích cho những người khác :-)



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDb nâng cấp ngoại lệ trường BSON không hợp lệ

  2. Làm cách nào để nhập dữ liệu từ mongodb sang gấu trúc?

  3. Xử lý cách MongoDB lưu trữ DateTime khi được sử dụng với Mẫu định vị dịch vụ

  4. Không thể đọc / ghi trên cơ sở dữ liệu MongoDB Atlas bằng Mongoose

  5. Hoàn tác Thư giãn tổng hợp trong mongodb