Un peu plus d'informations alors :
Mon fichier ressemble un peu à cela :
class Warehouse::Action < Warehouse::Base
include Warehouse::BrmEventCollection
map_field :action_name, "data.type"
map_field :context, "context"
map_field :location_type, "context.roomName"
map_field :location_id, "context.href"
map_field :browser_id, "context.browserID"
map_field :session_id, "context.sessionID"
map_field :target, "context.target"
query "metaData.eventName" => "Action", "data.type" => { "$in" => [
/mission_stat/ ] }
def self.format_event rec
puts rec[@context_index]
if rec[@action_name_index] == 'dispayed_profile_sheet' # reformat
event
rec[@action_name_index] = 'displayed_profile_sheet'
end
if rec[@location_type_index] == nil
rec[@location_type_index]= 'url'
else
rec[@location_id_index]=rec[@location_type_index]
rec[@location_type_index]= 'room'
end
if rec[@action_name_index] == 'exit_room'
m = /stayed\":(\d*)/.match(rec[@context_index])
rec[@context_index] = m[1] rescue nil
end
if rec[@action_name_index] == 'loaded_room'
m = /loadingTime\":(\d*)/.match(rec[@context_index])
rec[@context_index] = m[1] rescue nil
end
if /mission_status/.match(rec[@action_name_index]) != nil
m = /missionCode\":\"(\w*)\"/.match(rec[@context_index])
rec[@target_index] = m[1] rescue nil
end
return rec
end
end
En console, j'ai :
> irb(main):006:0> Warehouse::Action.import_day Date.new(2012,6,1)
> deleting former Warehouse::Action for date 2012-06-01
> Importing 2012-06-01 -- source_query:
> {"data.type"=>{"$in"=>[/mission_stat/]}, "metaData.eventName"=>"Action"}
> filter from:Fri Jun 01 00:00:00 +0200 2012 to:Sat Jun 02 00:00:00 +0200
> 2012
> Importing data -- source_query:
> data.type$in(?-mix:mission_stat)metaData.eventNameAction
> Mongo query: {:"metaData.timestamp"=>{"$lt"=>1338588000,
> "$gte"=>1338501600}, "metaData.eventName"=>"Action",
> "data.type"=>{"$in"=>[/mission_stat/]}}
> Mongo opts: {:fields=>["data.agent.id", "context.href",
> "context.sessionID", "context.roomName", "context.facetID", "data.type",
> "context.target", "metaData.timestamp", "context.browserID", "context",
> "metaData.timestamp"]}
> Nb of records to import: 1571
> location_id: 1
> session_id: 2
> location_type: 3
> facet_id: 4
> action_name: 5
> target: 6
> browser_id: 8
> context: 9
> [:user_id, :location_id, :session_id, :location_type, :facet_id,
> :action_name, :target, :recorded_at, :browser_id, :context, :recorded_on]
> {"roomName":"Room_Red311"}
> {"roomName":"Room_Red311"}
...
Pour les autres champs récupérés avec map_field, je n'ai aucun problème,
mais pour context je n'obtiens qu'une partie du JSON.
Si je lance mongo et que j'effectue :
db.logs.findOne({"metaData.timestamp":{$lt:1338588000,
$gte:1338501600},"metaData.eventName":"Action",
"data.type":{$in:[/mission_stat/]}})
J'obtiens :
{
"_id" : ObjectId("4fc939b7e4b04cd43b49e77d"),
"context" : {
"missionCode" : "hv_m2",
"roomID" : NumberLong(10190),
"roomName" : "Room_Red311"
},
"data" : {
"agent" : {
"id" : "10373755",
"type" : "userID"
},
"type" : "mission_status_read"
},
"metaData" : {
"application" : "toto",
"clientTimestamp" : NumberLong("1338587575060"),
"eventName" : "Action",
"ip" : "10.227.182.255",
"loggerType" : "java-server",
"loggerVersion" : "DEV (build 0)",
"sequenceNumber" : 51018,
"timestamp" : 1338587575,
"md5" : "cd3b4bce699174c797c27b55d4f6f951"
}
}
Le 13 juin 2012 13:35, lucas di cioccio <[email protected]> a écrit
:
> Hello,
>
> les ObjectId pour le même findOne sont les même pour les requêtes dans les
> deux langages?
>
> peux-tu faire un pastie de ta requête en ruby?
>
> --Lucas
>
> Le 12 juin 2012 18:32, Frédérick Sauvage <[email protected]> a
> écrit :
>
>> 1) Désolé comme j'ai 2 soucis similaires, j'ai pris le json précédent
>> mais pour le second problème.
>> Bon, après vérification, dans le passé c'était la même structure, si je
>> lance le calcul sur d'anciennes données j'ai le même problème et le fichier
>> .rb a subit des modifications trop mineures pour faire modifier les
>> résultats.
>>
>> 2) Je vais peut-être paraître stupide, mais je ne sais pas quoi répondre
>> à :
>>
>>> Le server est bon, c'est le client, ou son utilisation que tu dois fixer
>>
>>
>>
>>> Qu'utilises-tu coté client ruby ?
>>
>>
>>>
>>
>> 3) Entretemps, il y a eu une mise à jour de Rails, ce qui pourrait
>> expliquer des algorithmes ne retournent pas les mêmes résultats :
>>
>> - je vérifie que les dates concordent
>> - même si c'est le cas, ça ne me dit pas comment récupérer les données
>>
>>
>>
>>
>> --
>> Vous avez reçu ce message, car vous êtes abonné au groupe "Railsfrance"
>> de Google Groups.
>> Pour transmettre des messages à ce groupe, envoyez un e-mail à l'adresse
>> [email protected]
>> Pour résilier votre abonnement envoyez un e-mail à l'adresse
>> [email protected]
>>
>
> --
> Vous avez reçu ce message, car vous êtes abonné au groupe "Railsfrance" de
> Google Groups.
> Pour transmettre des messages à ce groupe, envoyez un e-mail à l'adresse
> [email protected]
> Pour résilier votre abonnement envoyez un e-mail à l'adresse
> [email protected]
>
--
SAUVAGE Frédéric
--
Vous avez reçu ce message, car vous êtes abonné au groupe "Railsfrance" de
Google Groups.
Pour transmettre des messages à ce groupe, envoyez un e-mail à l'adresse
[email protected]
Pour résilier votre abonnement envoyez un e-mail à l'adresse
[email protected]