and btw, AFAIK MongoQueries does not  have support for regexp, but would be easy to extend them to support it, something like: 

[ :each | each name regexpMatch: '^P*'  options: 'i'  ]

which is of course more expressive than the dictionary :)

Esteban

On Jul 4, 2013, at 8:29 PM, Esteban Lorenzano <estebanlm@gmail.com> wrote:

you also have regexp expressions (and I think they are better than the where clause): 

#name -> {
'$regex' -> '^P*'. 
'$options' -> 'i' 
} asDictionary 
} asDictionary

there is no support for it with MongoQueries, but they work fine with dictionaries :)

Esteban

On Jul 4, 2013, at 7:36 PM, Bernat Romagosa <tibabenfortlapalanca@gmail.com> wrote:

For other kinds of matches, you need javascript queries, if I understood:

User selectOne: [ :each | each where: 'this.name[0] == "s"' ]

Right?


2013/7/4 St�phane Ducasse <stephane.ducasse@inria.fr>
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.