如果我有文件,我聚集,我想一個子領域,如:MongoDB的管道匯聚管道替換值
{data: {'date_created': '2011-01-01', 'title': 'abc'}, 'owner': 'Jim'}
{data: {'date_created': '2011-05-01', 'title': 'def'}, 'owner': 'Bob'}
{data: {'date_created': '2011-03-01', 'title': 'ghi'}, 'owner': 'Jim'}
{data: {'date_created': '2011-03-01', 'title': ''}, 'owner': 'Sam'}
,我想聚集,這樣我只需要在某個日期之前創建的標題或返回一個空的列表,我將如何構造聚合管道?
因此所需的輸出將是:
{owner: "Jim", titles: ["abc", "def"],
owner: "Bob", titles: [],
owner: "Sam", titles: []}
我有一個總的管道是去是這樣的:
lookup => unwind =>
{'$match':
{'$or': [{'data.date_created': {'$lte': requested_date}}, {'data.title': {'$exists': False}}]}}}
,但我無法弄清楚如何投其中的日期創建的數據在需要的時間之後是空白的,所以它將被分組爲空白標題。
雖然不標準,你可以,如果你使用虛擬場(不存在的領域)的'$ push'會吸收,也不會增加任何類似簡化它。 '{「$ group」:{ _id:「$ owner」,標題:{ $ push:{$ cond:[{$ lte:[「$ data.date_created」,requested_date]},「$ data.title 「,」$ nonexist「 ] } } } }'' – Veeram