Iam using groovy scripting sotto SpagoBI. Voglio usare l'aggregazione. Voglio ad esempio per eseguire la seguente aggregazione:MongoDb: Aggregation using Groovy language
db.myCollection.aggregate(
[
{
$group : {
_id : { day: { $dayOfMonth: "$recvTime" } }
}
}
]
)
ho provato:
DBObject projectFields = new BasicDBObject('$dayOfMonth',"recvTime");
DBObject project=new BasicDBObject('$project',projectFields)
DBObject groupFields = new BasicDBObject("_id",project);
DBObject group = new BasicDBObject('$group', groupFields);
iterable = db.getCollection('myCollection').aggregate(group)
ho ottenuto questo errore:
An unexpected error occured while executing dataset: { "serverUsed" : "192.168.1.160:27017" , "errmsg" : "exception: invalid operator '$project'" , "code" : 15999 , "ok" : 0.0}
Tutte le idee?
Aggiornamenti: la query eseguita in Mongo Shell
db['cygnus_/kurapath_enocean_power_enocean'].aggregate(
... [
... {
... $group : {
... _id : { day: { $dayOfMonth: "$recvTime" } }
... }
... }
... ]
...);
{ "_id" : { "day" : 9 } }
{ "_id" : { "day" : 8 } }
{ "_id" : { "day" : 7 } }
{ "_id" : { "day" : 4 } }
{ "_id" : { "day" : 3 } }
i dati memorizzati in Mongo DB:
db['cygnus_/kurapath_enocean_power_enocean'].find()
{ "_id" : ObjectId("55e81e9631d7791085668331"), "recvTime" : ISODate("2015-09-03T10:19:02Z"), "attrName" : "power", "attrType" : "string", "attrValue" : "2085.0" }
{ "_id" : ObjectId("55e81e9631d7791085668332"), "recvTime" : ISODate("2015-09-03T10:19:02Z"), "attrName" : "power", "attrType" : "string", "attrValue" : "2085.0" }
{ "_id" : ObjectId("55e81e9831d7791085668333"), "recvTime" : ISODate("2015-09-03T10:19:04Z"), "attrName" : "power", "attrType" : "string", "attrValue" : "2077.0" }
Ho provato il tuo codice ma ho ricevuto un nuovo errore :(: 'Si è verificato un errore imprevisto durante l'esecuzione del set di dati: Nessuna proprietà: dayOfMonth per la classe: Script119' quando ho provato 'DBObject dateFields = new BasicDBObject ('$ dayOfMonth'," recvTime ");' Ho ottenuto ' Si è verificato un errore imprevisto durante l'esecuzione del set di dati: {" serverUsed ":" 192.168.1.160:27017 "," errmsg ":" eccezione: impossibile convertire da tipo BSON da stringa a data "," codice ": 16006," ok ": 0.0}' – sabrina2020
Hai dimenticato di includere '$' nel tuo campo "recvTime" ', quindi cambia la riga' DBObject dateFields = new BasicDBObject ('$ dayOfMonth', "recvTime") 'a' DBObject dateFields = new BasicDBObject ('$ dayOfMonth ', "$ recvTime") '. – chridam
Ho aggiornato il codice in 'DBObject dateFields = new BasicDBObject ('$ dayOfMonth'," $ recvTime ")' ma ho ricevuto questo errore 'Si è verificato un errore imprevisto durante l'esecuzione del set di dati: Nessuna proprietà: recvTime per classe', se ho aggiornato a 'DBObject dateFields = new BasicDBObject ('$ dayOfMonth', '$ recvTime');' Ho ottenuto un set di risultati vuoto – sabrina2020