But, as far as I know, Mongo will create an _id key with an Mongo OID
for every document that doesn't have one.
You can use _id without having to use an OID, you can use plain
strings or integers.

So I guess it is safe to use _id. I'll change it in my tests and then
let you know.

:)
Esteban A. Maringolo


2013/7/8 Esteban Lorenzano <esteba...@gmail.com>:
> 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