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 <tibabenfortlapala...@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.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.