1

I am receiving data (BsonDocument) from mongodb using a C# driver like this:

{ 
 "_id":ObjectId("5c8730688a247070ca5e4a15"),
 "visitorEmail":"UnRegistered",
 "visitorName":"Guest040704",
 "agentEmail":"salman@blauda.com",
 "sessionid":"5c86e0f88a247070ca5e48e6",
 "createdOn":"2019-03-12T04:07:04.455Z",
 "state":3,
 "messages":[ 

  ],
"messageReadCount":0,
"lastMessage":{ 
   "_id":ObjectId("5c8730688a247070ca5e4a16"),
    "from":"MEHAK",
    "to":"Guest040704",
    "body":"Hello.. How may i Help You ?",
    "cid":ObjectId("5c8730688a247070ca5e4a15"),
    "date":"2019-03-12T04:07:04.455Z",
    "type":"Agents",
     "attachment":false,
     "filename":null
   },
 "entertained":true,
 "endingDate":"2020-01-15T05:47:37.170Z"
}

Now I want to check if the key "assigned_to" exists in this document or not. So i tried this:

convObject.TryGetValue("assigned_to", out isAssignedToExist);
Console.WriteLine("is assigned to ---- : "+isAssignedToExist);

I am getting an error like this instead of the result whether key exists or not:

ErorrSystem.Collections.Generic.KeyNotFoundException: Element 'assigned_to' not found.at 
MongoDB.Bson.RawBsonDocument.GetValue(String name) at 
sqs_processor.QueueService.ExecuteAsync(CancellationToken stoppingToken) in 
D:\OfficeProjects\beelinksanalytics\Services\queueService.cs:line 100
SparkFountain
  • 2,110
  • 15
  • 35
Fahad Hassan
  • 781
  • 10
  • 20

1 Answers1

2

Use Contains(string) to see if a key exists.

bool assignedToExists = convObject.Contains("assigned_to")

Your stack trace also indicates that you have used GetValue, not TryGetValue as your question suggests.

TryGetValue(string, out BsonValue) returns a boolean value which indicates if the retrieval was successful (I.E: the key exists) and the value is assigned to the out variable

This of course can be simplified, I've expanded the code for verbosity.

bool assignedToExists = convObject.TryGetValue("assigned_to", out BsonValue assignedtoValue);

if (assignedToExists)
{
    Console.WriteLine("Assigned to exists, value is {0}", assignedToValue);
}
ColinM
  • 2,622
  • 17
  • 29