Also, how does one query a referenced object?MyClass selectMany: { 'project.name' -> 'Test' } asDictionary. "<-- Works only if project is an embedded object, but it doesn't if it's a reference."
2013/7/8 Bernat Romagosa <tibabenfortlapalanca@gmail.com>
Sorry for being lazy, but how does one use logical operators in dictionary queries?I'm trying something like:(User selectMany: { 'profile.firstName' -> { '$regex' -> '^.*na.*'. '$options' -> 'i'} asDictionary } asDictionary).
And I'd like to $or this with:'profile.surname' -> { '$regex' -> '^.*ve.*'. '$options' -> 'i'} asDictionary.
--2013/7/6 St�phane Ducasse <stephane.ducasse@inria.fr>
too if you want but we could also focus on the chapter because we can be multiple people to edit it
On Jul 6, 2013, at 11:16 AM, Esteban Lorenzano <estebanlm@gmail.com> wrote:
> sure :)
>
> I will add a blog post on "voyage advanced queries" too :)
while your blog you are alone.
Stef
>
> Esteban
>
> On Jul 6, 2013, at 10:52 AM, St�phane Ducasse <stephane.ducasse@inria.fr> wrote:
>
>> esteban could you take some time to add this information to the Voyage chapter?
>>
>> https://ci.inria.fr/pharo-contribution/job/PharoForTheEnterprise/
>>
>> add the information in any format and I can make it run.
>>
>> https://github.com/SquareBracketAssociates/PharoForTheEnterprise-english
>>
>> Stef
>>
>>
>>
>> On Jul 4, 2013, at 7:49 PM, Esteban Lorenzano <estebanlm@gmail.com> wrote:
>>
>>> you have different constructions:
>>>
>>> { $gt: { "number_field": 42 } }
>>>
>>> and so on... always with dictionaries (bah, json structs).
>>>
>>> as a query language it kinda sucks... but well... is how it is :)
>>>
>>> On Jul 4, 2013, at 7:34 PM, St�phane Ducasse <stephane.ducasse@inria.fr> wrote:
>>>
>>>> Ok but how do I map conceptual a query to a dictionary
>>>>
>>>> Do I guess right that there is an exact match
>>>>
>>>> selectOne: { id -> 10} asDictionary
>>>>
>>>> will match id = 10
>>>>
>>>> Now we can only do exact mathc?
>>>>
>>>> name matches: 'stef*'
>>>>
>>>>
>>>> On Jul 4, 2013, at 6:04 PM, Esteban A. Maringolo <emaringolo@gmail.com> wrote:
>>>>
>>>>> Stef,
>>>>>
>>>>> You're asking the other Esteban, but having used Voyage and Mongo I
>>>>> think I can answer this.
>>>>>
>>>>> Mongo receives a JSON object to do all the query filtering. For a
>>>>> simple lookup it is has a simple structre, as the query gets more
>>>>> complex it gets esoteric as well (with "special" MongoDB keys in the
>>>>> format of "$key").
>>>>>
>>>>> Because the simplest map we have to a JSON Object is the Dictionary, I
>>>>> guess that's why it ends up being converted to a Dictionary, which in
>>>>> turn gets converted to JSON and/or BSON.
>>>>>
>>>>> Regards,
>>>>>
>>>>> Esteban A. Maringolo
>>>>>
>>>>>
>>>>> 2013/7/4 St�phane Ducasse <stephane.ducasse@inria.fr>:
>>>>>>
>>>>>> On Jul 4, 2013, at 2:58 PM, Esteban Lorenzano <estebanlm@gmail.com> wrote:
>>>>>>
>>>>>> Hi :)
>>>>>>
>>>>>> can you check if you have the "MongoQueries" package installed?
>>>>>>
>>>>>> cheers,
>>>>>> Esteban
>>>>>>
>>>>>> ps: please notice that in anycase you will not be able to execute
>>>>>>
>>>>>> [ :each | each name first = $X ]
>>>>>>
>>>>>> because the MongoQueries package just translates the block into a
>>>>>> mongo-query which is a dictionary (a JSON expression). But you will found
>>>>>> some ways to help you, some special keywords like #in: and #where: (you can
>>>>>> see how they work in the tests)
>>>>>>
>>>>>>
>>>>>> esteban
>>>>>> how a dictionary is used to work as a block for a query?
>>>>>> Can you explain because I would have thought that the first line did not
>>>>>> work and the second would work.
>>>>>>
>>>>>> Stef
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>> On Jul 4, 2013, at 2:17 PM, Bernat Romagosa <tibabenfortlapalanca@gmail.com>
>>>>>> wrote:
>>>>>>
>>>>>> Hi!
>>>>>>
>>>>>> I realize probably only Esteban will be able to answer, but I prefer to
>>>>>> write to the list so the mail is logged and other people can benefit from
>>>>>> it.
>>>>>>
>>>>>> I'm trying to use blocks as arguments for #selectOne: and #selectMany:, but
>>>>>> it doesn't seem to work. Here's my code:
>>>>>>
>>>>>> MyClass selectOne: { #name -> 'Some name' } asDictionary.
>>>>>> MyClass selectOne: [ :each | each name = 'Some name' ].
>>>>>>
>>>>>>
>>>>>> The first one works, but the second one raises a VOMongoConnectionError.
>>>>>>
>>>>>> Also:
>>>>>>
>>>>>> MyClass selectMany: { #name -> 'Some name' } asDictionary.
>>>>>> MyClass selectMany: [ :each | each name = 'Some name' ].
>>>>>>
>>>>>>
>>>>>> The first does work, the second one doesn't, which prevents me from writing
>>>>>> more useful stuff like:
>>>>>>
>>>>>> MyClass selectMany: [ :each | each name first = $P ].
>>>>>>
>>>>>> Any idea why this could be failing? I've the latest stable version loaded
>>>>>> via:
>>>>>>
>>>>>> Gofer it
>>>>>> url: 'http://smalltalkhub.com/mc/estebanlm/Voyage/main';
>>>>>> package: 'ConfigurationOfVoyageMongo';
>>>>>> load.
>>>>>> (Smalltalk at: #ConfigurationOfVoyageMongo) load.
>>>>>>
>>>>>> Thanks! :)
>>>>>>
>>>>>> Bernat.
>>>>>>
>>>>>> --
>>>>>> Bernat Romagosa.
>>>>>>
>>>>>>
>>>>>>
>>>>>
>>>>
>>>>
>>>
>>>
>>
>>
>
>
Bernat Romagosa.--
Bernat Romagosa.