Bonjour à tous, 

Je me trouve face à un paradoxe que je n'arrive pas à résoudre. J'obtiens 
des résultats différents selon que la requête est effectuée via mongo ou en 
Ruby.

En tapant directement ma requête, j'obtiens :

db.logs.findOne({ "data.type":{$in:[/mission_status/]}, 
"metaData.eventName":"Action", "metaData.timestamp":{$gte:1338501600, 
$lt:1338588000}})

J'obtiens :
{
    "_id" : ObjectId("4fc123b7e4b25cd43b68e77d"),
    "context" : {
        "missionCode" : "my_mission",
        "roomID" : NumberLong(10110),
        "roomName" : "My_Room311"
    },
    "data" : {
        "agent" : {
            "id" : "10373744",
            "type" : "userID"
        },
        "type" : "mission_status_0"
    },
    "metaData" : {
        "application" : "my_app",
        "clientTimestamp" : NumberLong("1338587575060"),
        "eventName" : "Action",
        "ip" : "11.214.162.255",
        "loggerType" : "java-server",
        "loggerVersion" : "DEV (build 0)",
        "sequenceNumber" : 51018,
        "timestamp" : 1338587575,
        "md5" : "cd3b4bce699174c797c27b55d4f6f951"
    }
}

 

Dans mon code Ruby, cette requête est effectuée.

 

Mais si je code map_field :context, "context" alors dès le lancement de la 
fonction, si je tente d'afficher le champ context avec la fonction puts, 
j'obtiens {"roomName":"My_Room311"}, tandis que si je code   map_field 
:context, "context.missionCode" j'obtiens bien my_mission.

 

Le problème est que j'ai besoin d'écrire map_field :context, "context" pour 
généraliser les opérations avec d'autres valeurs.

 
Certes la structure a été modifiée par une équipe (et le fait que les 
champs de type NumberLong étaient précédemment des entiers ou des entiers 
sous forme de chaînes de caractères), mais d'après ce que j'ai sous les 
yeux il reste anormal selon moi que je n'obtienne pas les résultats 
souhaités.
 
Merci d'avance si vous avez des idées car là je patauge.

-- 
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]

Répondre à