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