I have the following code:
lanprops = []
for lan in languages
# NOTE: OrderedDict gives error in Mongoc.BSON()
prop = OrderedDict{String, Any}()
prop["hasPropertyName"] = "hasLabel"
prop["hasDataType"] = "string"
prop["hasSpecifier"] = "language: " * lan
push!(lanprops, prop)
end
initdoc = Dict{String, Any}()
initdoc["_id"] = "itemType"
initdoc["hasBaseType"] = "systemItem"
initdoc["hasProperties"] = lanprops
Mongoc.transaction(client) do session
new_item = Mongoc.BSON(initdoc)
push!(collection, new_item)
end
The OrderedDict gives the following error:
Error: ERROR:
│ exception =
│ MethodError: no method matching setindex!(::Mongoc.BSON, ::OrderedCollections.OrderedDict{String, Any}, ::String)
When I change the OrderedDict to a ‘regular’ Dict everything works fine. What can I do to make the OrderedDict working okay in Mongoc.BSON()?
The end result must look like this (the order of the key-value pairs under hasProperties is important):
{
"_id" : "itemType",
"hasBaseType" : "systemItem",
"hasProperties" : [{
"hasPropertyName" : "hasLabel",
"hasDataType" : "string",
"hasSpecifier" : "language: nl"
}, {
"hasPropertyName" : "hasLabel",
"hasDataType" : "string",
"hasSpecifier" : "language: en"
}]
}