Because _id is internally used by mongo and I didn't wanted to risk any collision :)
On Jul 8, 2013, at 2:26 PM, "Esteban A. Maringolo" <emaring...@gmail.com> wrote: > Esteban, > > Why do you use __id: (double underscore) instead of the _id (single > underscore) key? > > Regards, > Esteban A. Maringolo > > > 2013/7/8 Esteban Lorenzano <esteba...@gmail.com>: >> Hi again, >> >> sadly, there is no direct support for referenced queries yet. >> >> however, you can workaround the problem by doing: >> >> >> { >> 'referenceField.__id' -> (VORepository current keyOf: referenceObject) >> } asDictionary. >> >> or with MongoQueries: >> >> [ :each | (each at: 'referenceField.__id') = (VORepository current keyOf: >> referenceObject) ] >> >> Some internal info: >> in Voyage, all references are kept in mongo as sub-documents with this >> structure: >> >> { >> '__id': OID(1234567890). >> '#collection': 'theNameOfTheCollection'. >> } >> >> so, you always can construct queries knowing that :) >> >> Esteban >> >> On Jul 8, 2013, at 12:58 PM, Bernat Romagosa >> <tibabenfortlapala...@gmail.com> wrote: >> >> 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. >> >> >