Ich habe eine interessante Frage. Zum Beispiel habe ich eine Mongo-Sammlung mit start_date
und end_date
. Ich muss eine Aggregationsabfrage (oder mapReduce) erstellen, die ein Array von Arrays mit überlappenden Daten zurückgibt.Mongo Aggregation Abfrage
Zum Beispiel:
Sammlung:
[{
_id: 1111111,
start_date: '10/04/2016',
end_data: '13/04/2016'
},
{
_id: 2222222,
start_date: '11/04/2016',
end_data: '20/04/2016'
},
{
_id: 3333333,
start_date: '10/05/2016',
end_data: '13/05/2016'
},
{
_id: 44444444,
start_date: '12/05/2016',
end_data: '15/05/2016'
},
{
_id: 55555555,
start_date: '18/04/2016',
end_data: '22/04/2016'
}]
zurückkehren sollte
[[1111111, 2222222], [3333333,44444444], [2222222, 55555555]]
Was ist, wenn Sie mehr als 2 Dokumente überlappend haben? – VonD
Nein, das können Sie nicht mit Aggregation tun, Sie müssen es in der Anwendung tun. – BanksySan
Unmöglich? nahhh ... Wie wäre es: Projekt (legte die 2 Daten in ein Array)> Abwickeln auf diesem Array> Gruppieren nach Datum> übereinstimmen, wenn ein Datum beginnt und das andere Ende ist> addToSet thesw gruppierte IDs ...... Es ist Die globale Idee, ich werde versuchen, den genauen Code zu geben. –