On Wed, Jun 3, 2015 at 10:50 PM, Christophe Demarey < Christophe.Demarey@inria.fr> wrote:
Le 3 juin 2015 à 19:32, phil@highoctane.be a écrit :
Le 3 juin 2015 17:45, "Christophe Demarey" <christophe.demarey@inria.fr> a écrit :
Hello,
I would like to use set operators defined in mongo but it looks like
there is no support for the aggregation framework in the mongo driver.
Does anyone has information about this?
Search the list as I posted an example before.
ok, I finally found your example :
mongo := Mongo default open. db := mongo databaseNamed: 'somedb'.
aCommandDict := { 'distinct' -> 'somecollection'. 'key' -> 'XYZ'. 'query' -> nil } asDictionary.
reply := db command: aCommandDict.
(CollectionValidation on: reply) isOK.
distinct := reply at: #values.
There is no OO support in the driver for that.
So aggregate can be run as a command with the Mongo driver. I checked the following code: Mongo>>command: aDictionary database: aDatabase | query | query := MongoQuery new database: aDatabase; collection: (MongoMetaCollection name: '$cmd'); where: aDictionary; yourself. ^self queryOne: query.
I do not understand why a MongoQuery is used there and why it is supposed to return only one element (queryOne)?
Because $cmd is a special collection that one uses for issuing such requests. You always have to pass a collection to mongo. QueryOne is issuing the query. HTH Phil
Thanks, Christophe