your query is almost fine: the unique problem is with the argument for the $or expression, which should not be another dictionary but a collection:
{ '$or' -> (Array with: 'profile.firstName' -> { '$regex' -> '^.*na.*'. '$options' -> 'i'} asDictionary with: 'profile.surname' -> { '$regex' -> '^.*ve.*'. '$options' -> 'i'} asDictionary) } asDictionary. On Jul 8, 2013, at 2:16 PM, Bernat Romagosa <tibabenfortlapala...@gmail.com> wrote: > Thanks! The reference thing is exactly what I needed :) > > However, I'm not managing very well with the $or query... how would one add a > regex in there? > > I've tried: > > User selectMany: > { > '$or' -> > { > 'profile.firstName' -> { '$regex' -> '^.*na.*'. > '$options' -> 'i'} asDictionary. > 'profile.surname' -> { '$regex' -> '^.*ve.*'. > '$options' -> 'i'} asDictionary. > } asDictionary > } asDictionary. > > But it's obviously wrong... :( > > > 2013/7/8 Esteban Lorenzano <esteba...@gmail.com> > Hi, > > something like this: > > { > '$or'-> { > { $field1 -> value1 } asDictionary. "expression 1" > { $field2 -> value2 } asDictionary. "expression 2" > ... > { $fieldN -> valueN } asDictionary. "expression N" > } > } asDictionary > > cheers, > Esteban > > On Jul 8, 2013, at 12:16 PM, Bernat Romagosa <tibabenfortlapala...@gmail.com> > wrote: > >> 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.duca...@inria.fr> >> >> On Jul 6, 2013, at 11:16 AM, Esteban Lorenzano <esteba...@gmail.com> wrote: >> >> > sure :) >> > >> > I will add a blog post on "voyage advanced queries" too :) >> >> too if you want but we could also focus on the chapter because we can be >> multiple people to edit it >> while your blog you are alone. >> >> Stef >> >> > >> > Esteban >> > >> > On Jul 6, 2013, at 10:52 AM, Stéphane Ducasse <stephane.duca...@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 <esteba...@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.duca...@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 <emaring...@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.duca...@inria.fr>: >> >>>>>> >> >>>>>> On Jul 4, 2013, at 2:58 PM, Esteban Lorenzano <esteba...@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 >> >>>>>> <tibabenfortlapala...@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.