Here’s the code.
function date_with_duplicates_for_grid(grid_id:: Int32, client:: MongoClient)
command_simple(client, "xxx", OrderedDict(
"aggregate" => "yyy",
"pipeline" => [
Dict("\$match" => Dict("id_grid" => grid_id)),
Dict("\$group" => Dict(
"_id" => Dict("date" => "\$date", "id_grid"=> "\$id_grid"),
"count" => Dict("\$sum" => 1))
),
Dict("\$match" => Dict("count" => Dict("\$gt" => 1))),
Dict("\$project" => Dict("_id.date" => 1))
]
)
)
end
function measurements_for(grid_id:: Int32, date:: DateTime, cdata:: MongoCollection)
find(cdata, Dict("id_grid" => grid_id, "date" => date), Dict("_id" => 1, "rain" => 1))
end
function run(grids:: MongoCursor, client:: MongoClient)
cdata = MongoCollection(client, "xxx", "yyy")
for grid in grids
grid_id = grid["id_grid"] :: Int32
for doc in date_with_duplicates_for_grid(grid_id, client)["result"]
d = doc["_id"]["date"] :: DateTime
mes = [m:: BSONObject for m in measurements_for(grid_id, d, cdata)]
vals = unique([m["rain"] :: Real for m in mes])
if( length(vals) > 1 )
println("More than one!")
else
for m in mes[2:end]
id = m["_id"]
delete(cdata, Dict("_id" => id))
end
end
end
end
end