no, don't do it regular _id are taken as usual. __id fields are references to another collection documents inside one document (something that mongo does not have by itself).
And I like like that :) Esteban On Jul 8, 2013, at 2:38 PM, Esteban A. Maringolo <emaring...@gmail.com> wrote: > 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. >>>> >>>> >>> >> >> >