M Andre Juliansyah
M Andre Juliansyah

Reputation: 127

How to insertmany() JSON Array in mongodb using C#

anyone know how to insert this json array into mongodb using insertmany() and C# ??

i cant find any good source for this problem

enter image description here

JSON ARRAY

Upvotes: 0

Views: 913

Answers (1)

John B
John B

Reputation: 1179

MongoCollectionBase.InsertMany expects an IEnumerable<TDocument>.
So you need to deserialize your data json element to TDocument[], (Datum) and then pass that array to InsertMany.

Based on the below json, which is different from your screenshot

{
    "data": [
        {
            "pulsa_code": "alfamart100",
            "pulsa_op": "Alfamart Voucher",
            "pulsa_nominal": "Voucher Alfamart Rp 100.000",
            "pulsa_price": 100000,
            "pulsa_type": "voucher",
            "masaaktif": "0",
            "status": "active"
        }
    ]
}

This should work

//...
public class Datum
{
    public string pulsa_code { get; set; }
    public string pulsa_op { get; set; }
    public string pulsa_nominal { get; set; }
    public double pulsa_price { get; set; }
    public string pulsa_type { get; set; }
    public string masaaktif { get; set; }
    public string status { get; set; }
    public double harga { get; set; }
}

public class PriceListPrepaidModel
{
    public List<Datum> data { get; set; }
}

public class PriceList : BaseDatabase
{
    //NOTE: The strongly typed IMongoCollection<T> must be the same type as the entities passed to InsertMany
    private IMongoCollection<Datum> _pricelistCollection;
    //private IMongoCollection<PriceListPrepaidModel> _pricelistCollection;
    public PriceList(IServiceProvider serviceProvider)
    {
        _pricelistCollection = DB.GetCollection<PriceListPrepaidModel>("price_prepaid");
    }
    public ResponseModel<string> PriceListPrepaidTest(PriceListPrepaidRequest request)
    {
        var entityResult = new ResponseModel<string>();
        try
        {
            Console.WriteLine(response.Content);

            //Desirialize to your model class, not JObject
            var model = JsonConvert.DeserializeObject<PriceListPrepaidModel>(message.AsString);
            foreach (var item in model.data)
            {
                item.pulsa_price = (int)item.pulsa_price + 200;
            }

            //Insert the array of `Datum`
            _pricelistCollection.InsertMany(model.data);

            entityResult.Value = JsonConvert.SerializeObject(model.data);
            entityResult.Status = true;
        }
        catch (Exception ex)
        {
            entityResult.Messages.Add(new ResponseMessageModel()
            {
                Type = ResponseMessageModel.MessageType.ERROR,
                Title = "Error",
                Message = ex.Message
            });
        }
        return entityResult;
    }
}

Upvotes: 1

Related Questions