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

Reply via email to