2017-04-13 1 views
-3

enter image description hereComment convertir une chaîne en texte brut

J'essaie d'implémenter une requête Mongo. J'ai écrit une fonction qui renvoie un des paramètres de la requête:

"'Week Of': {'$in': [02/13/17]}" 

Je ne veux pas les guillemets doubles à l'avant et l'arrière de la chaîne. Je comprends que c'est une chaîne et il en a besoin, mais quand je l'injecte dans ma requête, ça ne marchera pas parce qu'il y a ces guillemets. Est-il possible de convertir la chaîne en texte brut il ne serait

'Week Of': {'$in': [02/13/17]} 

J'ai un modèle qui accepte un hachage au milieu comme:

Nosql.aggregate([ p_header + ", " + s_header], {args[0]}, table.target_collection.name.to_sym) 

Le second argument est:

args[0] = "'Week Of': {'$in': [02/13/17]}" 

Cela ne fonctionne pas. Cependant, quand je mets la main dans

'Week Of': {'$in': [02/13/17]} 

à la place de

args[0] 

cela fonctionne.

+2

Montrez votre code. En outre, les guillemets sont peu probables dans la chaîne - ils apparaissent juste lorsque vous affichez une chaîne pour indiquer qu'il s'agit d'une chaîne. – dbugger

+0

updated @dbugger – brandoncodes

+0

Etes-vous sûr que vos arguments [0] sont "'Week Of': {'$ in': [02/13/17]}", parce que c'est à quoi ressemblera une chaîne dans la console. – dbugger

Répondre

0

On dirait qu'il veut un hachage, qui lorsque vous entrez dans les œuvres. Mais Ruby ne l'analyse pas de la même façon quand vous placez un argument de corde dans les accolades comme vous essayez de le faire. Vous pourriez faire quelque chose avec eval, mais il est plus simple d'avoir votre fonction qui génère l'argument pour retourner un hachage, pas une chaîne.

Vous ne montrez pas que le code, mais vous voulez quelque chose comme ça ...

def make_my_hash(dates) 
    return {"Week of" => { "$in" => dates}} 
end 

puis changer votre appel ...

Nosql.aggregate([ p_header + ", " + s_header], args[0], table.target_collection.name.to_sym)