Pharo-users
By thread
pharo-users@lists.pharo.org
By month
Messages by month
- ----- 2026 -----
- July
- June
- May
- April
- March
- February
- January
- ----- 2025 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2010 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
July 2013
- 65 participants
- 540 messages
NeoCSV on Pharo 1.4 - codepoint MNU?
by phil@highoctane.be
Hello,
I am currently working with a dataset in CSV format and am trying to load
it in to Moose for visualizations with Mondrian.
Now, I am facing an issue with NeoCSV.
I loaded the Configuration in Moose without trouble.
Now, when loading my file, I do get a MNU with SmallInteger codepoint
Is this a Moose issue or a NeoCSV issue ?
I've tried to comment out the codepoint message to see where this was going
but to no avail.
Clues?
TIA
Phil
[image: Inline image 2][image: Inline image 1]
July 8, 2013
Re: [Pharo-users] [Voyage] #selectOne: and #selectMany: with a block as the argument
by Esteban A. Maringolo
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 <estebanlm(a)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" <emaringolo(a)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 <estebanlm(a)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
>>> <tibabenfortlapalanca(a)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 <tibabenfortlapalanca(a)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.ducasse(a)inria.fr>
>>>>>
>>>>>
>>>>> On Jul 6, 2013, at 11:16 AM, Esteban Lorenzano <estebanlm(a)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.ducasse(a)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 <estebanlm(a)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.ducasse(a)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
>>>>>>>>> <emaringolo(a)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.ducasse(a)inria.fr>:
>>>>>>>>>>>
>>>>>>>>>>> On Jul 4, 2013, at 2:58 PM, Esteban Lorenzano
>>>>>>>>>>> <estebanlm(a)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
>>>>>>>>>>> <tibabenfortlapalanca(a)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.
>>>
>>>
>>
>
>
July 8, 2013
Re: [Pharo-users] [Voyage] #selectOne: and #selectMany: with a block as the argument
by Esteban Lorenzano
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" <emaringolo(a)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 <estebanlm(a)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
>> <tibabenfortlapalanca(a)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 <tibabenfortlapalanca(a)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.ducasse(a)inria.fr>
>>>>
>>>>
>>>> On Jul 6, 2013, at 11:16 AM, Esteban Lorenzano <estebanlm(a)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.ducasse(a)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 <estebanlm(a)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.ducasse(a)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
>>>>>>>> <emaringolo(a)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.ducasse(a)inria.fr>:
>>>>>>>>>>
>>>>>>>>>> On Jul 4, 2013, at 2:58 PM, Esteban Lorenzano
>>>>>>>>>> <estebanlm(a)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
>>>>>>>>>> <tibabenfortlapalanca(a)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.
>>
>>
>
July 8, 2013
Re: [Pharo-users] [Voyage] #selectOne: and #selectMany: with a block as the argument
by Esteban Lorenzano
your query is almost fine:
the unique problem is with the argument for the $or expression, which should not be another dictionary but a collection:
{
'$or' -> (Array
with: 'profile.firstName' -> { '$regex' -> '^.*na.*'. '$options' -> 'i'} asDictionary
with: 'profile.surname' -> { '$regex' -> '^.*ve.*'. '$options' -> 'i'} asDictionary)
} asDictionary.
On Jul 8, 2013, at 2:16 PM, Bernat Romagosa <tibabenfortlapalanca(a)gmail.com> wrote:
> Thanks! The reference thing is exactly what I needed :)
>
> However, I'm not managing very well with the $or query... how would one add a regex in there?
>
> I've tried:
>
> User selectMany:
> {
> '$or' ->
> {
> 'profile.firstName' -> { '$regex' -> '^.*na.*'. '$options' -> 'i'} asDictionary.
> 'profile.surname' -> { '$regex' -> '^.*ve.*'. '$options' -> 'i'} asDictionary.
> } asDictionary
> } asDictionary.
>
> But it's obviously wrong... :(
>
>
> 2013/7/8 Esteban Lorenzano <estebanlm(a)gmail.com>
> Hi,
>
> something like this:
>
> {
> '$or'-> {
> { $field1 -> value1 } asDictionary. "expression 1"
> { $field2 -> value2 } asDictionary. "expression 2"
> ...
> { $fieldN -> valueN } asDictionary. "expression N"
> }
> } asDictionary
>
> cheers,
> Esteban
>
> On Jul 8, 2013, at 12:16 PM, Bernat Romagosa <tibabenfortlapalanca(a)gmail.com> wrote:
>
>> 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.ducasse(a)inria.fr>
>>
>> On Jul 6, 2013, at 11:16 AM, Esteban Lorenzano <estebanlm(a)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.ducasse(a)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 <estebanlm(a)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.ducasse(a)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 <emaringolo(a)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.ducasse(a)inria.fr>:
>> >>>>>>
>> >>>>>> On Jul 4, 2013, at 2:58 PM, Esteban Lorenzano <estebanlm(a)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 <tibabenfortlapalanca(a)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.
July 8, 2013
Re: [Pharo-users] [Voyage] #selectOne: and #selectMany: with a block as the argument
by Esteban A. Maringolo
Esteban,
Why do you use __id: (double underscore) instead of the _id (single
underscore) key?
Regards,
Esteban A. Maringolo
2013/7/8 Esteban Lorenzano <estebanlm(a)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
> <tibabenfortlapalanca(a)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 <tibabenfortlapalanca(a)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.ducasse(a)inria.fr>
>>>
>>>
>>> On Jul 6, 2013, at 11:16 AM, Esteban Lorenzano <estebanlm(a)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.ducasse(a)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 <estebanlm(a)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.ducasse(a)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
>>> >>>> <emaringolo(a)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.ducasse(a)inria.fr>:
>>> >>>>>>
>>> >>>>>> On Jul 4, 2013, at 2:58 PM, Esteban Lorenzano
>>> >>>>>> <estebanlm(a)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
>>> >>>>>> <tibabenfortlapalanca(a)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.
>
>
July 8, 2013
Re: [Pharo-users] More than 500MB for windows
by CHRIS BAILEY
It's bound to be the same. I encountered this quite extensively when
using VSE on Win32. There were normally a couple of system DLL's that
got plonked into the middle of it's address range and just moving those
to one of the outer edges would mean the image could be started with a
much bigger address space. Some would move without issues, some would
just refuse to budge and some would appear to work until you actually
called something in the offending dll :)
The simplest quick gain I
could get was to use the Windows /3gb switch. This would give you an
extra gb of contiguous memory and mean you could run an image just shy
of 1gb. This increases to just under 2gb when you run it on a 64-bit
machine. Even though the VM itself wasn't 64-bit, you still get the
memory benefits.
________________________________
From: Mariano Martinez Peck <marianopeck(a)gmail.com>
To: Any question about pharo is welcome <pharo-users(a)lists.pharo.org>
Cc: CHRIS BAILEY <cpmbailey(a)btinternet.com>
Sent: Monday, 8 July 2013, 12:46
Subject: Re: [Pharo-users] More than 500MB for windows
I remember there was a thread where Andreas explains why the windows VM would not alloc more than 500 MB. I think it's quite similar if not the same to what Chris has said. If this is the case, MAYBE, depending on which dlls/plugins you use, you may be safe and alloc more??? Don't know...
I can search the email if you want.Â
Cheers,
On Mon, Jul 8, 2013 at 8:33 AM, Usman Bhatti <usman.bhatti(a)gmail.com> wrote:
On Mon, Jul 8, 2013 at 1:26 PM, CHRIS BAILEY <cpmbailey(a)btinternet.com> wrote:
>
>This is a standard problem on Windows whenever something tries to allocate contiguous memory due to the way it fragments your exe's memory with it's own dlls. I was able to get 1.4gb with some pretty nasty hacking of an exe once by rebasing the biggest offending dlls (it wasn't Pharo but the same principles should apply). You can find them using dependency walker. Be aware it can come with side effects as some really don't want to be moved, and as such I second Sven's OS comment ;-)
>>
>
>
>Tx for the hint. I'll first try image level optimizations before descending down to OS-level.
>Â
>
>>
>>
>>
>>
>>________________________________
>> From: Usman Bhatti <usman.bhatti(a)gmail.com>
>>To: Any question about pharo is welcome <pharo-users(a)lists.pharo.org>
>>Sent: Monday, 8 July 2013, 12:05
>>Subject: [Pharo-users] More than 500MB for windows
>>
>>
>>
>>[I know there were some discussions on the topic and the topic of 64-bit VM but I'm not sure where we stand today].
>>
>>I would like to know if we can allocate more than 500MB for pharo virtual machine in Windows? I am getting an "Out Of memory" msg and the following VM statistics when trying to parse a large application with Moose. Increasing the size would be the cheapest option (in terms of effort) before trying other optimizations.
>>
>>
>>tx
>>
>>
>>
>>
>>
>>
>>
>
--
Mariano
http://marianopeck.wordpress.com
July 8, 2013
Re: [Pharo-users] [Voyage] #selectOne: and #selectMany: with a block as the argument
by Bernat Romagosa
Thanks! The reference thing is exactly what I needed :)
However, I'm not managing very well with the $or query... how would one add
a regex in there?
I've tried:
User selectMany:
{
'$or' ->
{
'profile.firstName' -> { '$regex' -> '^.*na.*'. '$options' -> 'i'}
asDictionary.
'profile.surname' -> { '$regex' -> '^.*ve.*'. '$options' -> 'i'}
asDictionary.
} asDictionary
} asDictionary.
But it's obviously wrong... :(
2013/7/8 Esteban Lorenzano <estebanlm(a)gmail.com>
> Hi,
>
> something like this:
>
> {
> '$or'-> {
> { $field1 -> value1 } asDictionary. "expression 1"
> { $field2 -> value2 } asDictionary. "expression 2"
> ...
> { $fieldN -> valueN } asDictionary. "expression N"
> }
> } asDictionary
>
> cheers,
> Esteban
>
> On Jul 8, 2013, at 12:16 PM, Bernat Romagosa <
> tibabenfortlapalanca(a)gmail.com> wrote:
>
> 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.ducasse(a)inria.fr>
>
>>
>> On Jul 6, 2013, at 11:16 AM, Esteban Lorenzano <estebanlm(a)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.ducasse(a)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 <estebanlm(a)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.ducasse(a)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 <
>> emaringolo(a)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.ducasse(a)inria.fr>:
>> >>>>>>
>> >>>>>> On Jul 4, 2013, at 2:58 PM, Esteban Lorenzano <estebanlm(a)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 <
>> tibabenfortlapalanca(a)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.
July 8, 2013
Re: [Pharo-users] [Voyage] #selectOne: and #selectMany: with a block as the argument
by Esteban Lorenzano
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 <tibabenfortlapalanca(a)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 <tibabenfortlapalanca(a)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.ducasse(a)inria.fr>
>
> On Jul 6, 2013, at 11:16 AM, Esteban Lorenzano <estebanlm(a)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.ducasse(a)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 <estebanlm(a)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.ducasse(a)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 <emaringolo(a)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.ducasse(a)inria.fr>:
> >>>>>>
> >>>>>> On Jul 4, 2013, at 2:58 PM, Esteban Lorenzano <estebanlm(a)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 <tibabenfortlapalanca(a)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.
July 8, 2013
Re: [Pharo-users] [Voyage] #selectOne: and #selectMany: with a block as the argument
by Esteban Lorenzano
Hi,
something like this:
{
'$or'-> {
{ $field1 -> value1 } asDictionary. "expression 1"
{ $field2 -> value2 } asDictionary. "expression 2"
...
{ $fieldN -> valueN } asDictionary. "expression N"
}
} asDictionary
cheers,
Esteban
On Jul 8, 2013, at 12:16 PM, Bernat Romagosa <tibabenfortlapalanca(a)gmail.com> wrote:
> 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.ducasse(a)inria.fr>
>
> On Jul 6, 2013, at 11:16 AM, Esteban Lorenzano <estebanlm(a)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.ducasse(a)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 <estebanlm(a)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.ducasse(a)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 <emaringolo(a)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.ducasse(a)inria.fr>:
> >>>>>>
> >>>>>> On Jul 4, 2013, at 2:58 PM, Esteban Lorenzano <estebanlm(a)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 <tibabenfortlapalanca(a)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.
July 8, 2013
Re: [Pharo-users] More than 500MB for windows
by Mariano Martinez Peck
I remember there was a thread where Andreas explains why the windows VM
would not alloc more than 500 MB. I think it's quite similar if not the
same to what Chris has said. If this is the case, MAYBE, depending on which
dlls/plugins you use, you may be safe and alloc more??? Don't know...
I can search the email if you want.
Cheers,
On Mon, Jul 8, 2013 at 8:33 AM, Usman Bhatti <usman.bhatti(a)gmail.com> wrote:
> On Mon, Jul 8, 2013 at 1:26 PM, CHRIS BAILEY <cpmbailey(a)btinternet.com>wrote:
>
>> This is a standard problem on Windows whenever something tries to
>> allocate contiguous memory due to the way it fragments your exe's memory
>> with it's own dlls. I was able to get 1.4gb with some pretty nasty hacking
>> of an exe once by rebasing the biggest offending dlls (it wasn't Pharo but
>> the same principles should apply). You can find them using dependency
>> walker. Be aware it can come with side effects as some really don't want to
>> be moved, and as such I second Sven's OS comment ;-)
>>
>
> Tx for the hint. I'll first try image level optimizations before
> descending down to OS-level.
>
>
>>
>>
>> ------------------------------
>> *From:* Usman Bhatti <usman.bhatti(a)gmail.com>
>> *To:* Any question about pharo is welcome <pharo-users(a)lists.pharo.org>
>> *Sent:* Monday, 8 July 2013, 12:05
>> *Subject:* [Pharo-users] More than 500MB for windows
>>
>> [I know there were some discussions on the topic and the topic of 64-bit
>> VM but I'm not sure where we stand today].
>> I would like to know if we can allocate more than 500MB for pharo virtual
>> machine in Windows? I am getting an "Out Of memory" msg and the following
>> VM statistics when trying to parse a large application with Moose.
>> Increasing the size would be the cheapest option (in terms of effort)
>> before trying other optimizations.
>>
>> tx
>>
>> [image: Inline image 1]
>>
>>
>>
>>
>
--
Mariano
http://marianopeck.wordpress.com
July 8, 2013