2012-11-28 8 views
5

In realtà, utilizzo la riduzione mappa per eseguire alcuni calcoli. Non riesco a farlo con il framework di aggregazione perché non sono disponibili operatori di pipeline per i miei calcoli.Operatori di pipeline personalizzati con MongoDB Aggregation Framework

È possibile scrivere operatori di pipeline personalizzati?

Grazie in anticipo

+0

Che tipo di operatori aggiuntivi cosa avete bisogno? – Stennie

+0

stddev, median, operazioni condizionali principalmente – hotips

risposta

8

La risposta dipenderà dalla vostra definizione di "possibile":

1) Fuori dalla scatola: NO.

Come in MongoDB 2.2 non vi è alcuna funzione per l'utente finale che consente di aggiungere nuovi operatori di pipeline. Il framework di aggregazione e gli operatori di pipeline sono implementati in C++ per migliorare le prestazioni e la concorrenza rispetto alle precedenti opzioni di aggregazione come MapReduce (implementato in JavaScript).

2) Se si desidera scrivere uno in C++: SÌ (ma non banale).

MongoDB è un progetto open source, quindi è possibile immergersi nel codice C++ e implementare autonomamente funzionalità aggiuntive (vedere: src/mongo/db/pipeline). Si noti che ci sono linee guida su Contributing to the MongoDB project e lo sviluppo continuo è estremamente attivo.

Se si desidera scrivere funzioni personalizzate, l'opzione migliore al momento è continuare a utilizzare MapReduce.

Indipendentemente dalle opzioni di cui sopra, se è presente un operatore di pipeline o una funzione che si desidera vedere, si consiglia di suggerirla nello MongoDB Jira SERVER project (componente: Aggregation Framework). Ciò consentirà ad altri di commentare, guardare e votare sulla richiesta di funzionalità .. e se si finisce per implementare la funzionalità da soli, è possibile fare riferimento alla descrizione della funzione di Jira nella richiesta di pull. Prima di inviare una nuova richiesta di funzione, dovresti cercare anche se forse questa funzione ha already been suggested.

Ad esempio, ci sono già chiede quali:

+0

sai se è previsto l'utilizzo di un aggregatore di pipeline personalizzato con build ufficiale? Grazie ! – hotips

+0

Il framework di aggregazione è stato progettato per essere estensibile (e performante) in C++. Pertanto gli operatori di pipeline definiti dall'utente sembrano una combinazione improbabile. Se si vota su richieste di funzionalità in Jira, queste vengono prese in considerazione nella pianificazione delle versioni future. Map/Reduce rende disponibile un interprete JavaScript completo per l'aggregazione/manipolazione dei dati, con un compromesso in termini di efficienza e prestazioni. Per il confronto delle opzioni di aggregazione MongoDB, vedi: [gruppo(), $ gruppo e MapReduce] (http://stackoverflow.com/questions/12337319). – Stennie

Problemi correlati