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


Reply via email to