I am working on inserting an element inside an array which is inside an object which is inside an array.
{
"_id": "63206e8cc876d082460e33c3",
"MessageTrackingId": "08eab450-a2bd-408a-afab-be9ea665503e",
"RequestMessageLog": {
"ResponseMessageLog": {
"LogDateTime": "2022-09-13T11:50:36.426Z"
},
"LogDateTime": "2022-09-13T11:50:36.333Z",
"StatusCode": "Success",
"BiDirectionalMessageLogs": [
{
"MessageTrackingId": "bb7b5573-15ae-4db9-a67e-6862f31b9437",
"RequestMessageLog": {
"ResponseMessageLog": {
"ResponseMessageActionLogs": [
{
"LogDateTime": "2022-09-13T11:53:42.478Z",
"Contents": "something"
}
],
"LogDateTime": "2022-09-13T11:53:42.477Z"
},
"LogDateTime": "2022-09-13T11:53:42.477Z",
"StatusCode": "Success",
"BiDirectionalMessageLogs": null
}
}
]
}
}
I am trying to insert data into the RequestMessageLog.BiDirectionalMessageLogs.RequestMessageLog.ResponseMessageLog.ResponseMessageActionLogs
array but I am unable to do so.
So far I have tried:
FilterDefinition<MessageLog> filter = Builders<MessageLog>.Filter.Eq(e => e.MessageTrackingId, "08eab450-a2bd-408a-afab-be9ea665503e");
filter &= Builders<MessageLog>.Filter.Eq("RequestMessageLog.BiDirectionalMessageLogs.MessageTrackingId", "bb7b5573-15ae-4db9-a67e-6862f31b9437");
UpdateDefinition<MessageLog> update = Builders<MessageLog>.Update.Push("RequestMessageLog.BiDirectionalMessageLogs.RequestMessageLog.ResponseMessageLog.$.ResponseMessageActionLogs", responseMessageActionLog);
but I get the following error:
A write operation resulted in an error. WriteError: { Category : "Uncategorized", Code : 28, Message : "Cannot create field 'RequestMessageLog' in element {BiDirectionalMessageLogs:[ { MessageTrackingId: "bb7b5573....
I also tried the following code mentioned in another thread
IMongoDatabase Database = client.GetDatabase("Logs");
var cmd = new JsonCommand<BsonDocument>(@"Database.MessageLog.update(
{'MessageTrackingId' : '08eab450-a2bd-408a-afab-be9ea665503e', 'RequestMessageLog.BiDirectionalMessageLogs.MessageTrackingId': '4dc1f99c-b465-4170-9fef-c78cf5e92216'},
{$push:{'RequestMessageLog.BiDirectionalMessageLogs.RequestMessageLog.ResponseMessageLog.$.ResponseMessageActionLogs':{'LogDateTime':'2022-09-13T11:53:42.478Z', 'Contents':'something'}}})");
Database.RunCommand(cmd);
I did see Mongo push to array inside array code on this forum but was unable to make it work for C#.
What am I doing wrong here?