我在我的Mongo數據庫中有一個名爲WorkOrder
的集合,其中有兩個字段DateComplete
和DateDue
。使用這兩個字段,我想使用聚合框架通過比較兩個字段來計算「延遲」工作訂單的數量。然而,我發現的研究還沒有任何有用的方法來格式化查詢,以便「晚」工作訂單將被過濾。有誰知道一種方法來格式化MongoDB聚集查詢(最好用PHP),可以比較集合中的兩個字段?比較Mongo Aggregation查詢中的2個字段
編輯:
在工單一個示例項可能看起來像
_id
一些蒙戈ID
DateDue
2014年10月
DateCompleted
2014-10-12
此條目由於DateCompleted大於DateDue而需要過濾。我不知道$ cond操作符,所以我還沒有嘗試過。
編輯:
在我的PHP腳本
array(
'$cond' => array(
'if' => array(
'dateDue' => array(
'$lt' => 'dateComplete
)
)
)
)
用下面的查詢試圖@ BatScream的建議,然而,MongoCollection::Aggregate
功能告訴我,$cond
沒有一個公認的操作後。
編輯︰@ BatScream的答案似乎工作,但我沒有意識到這樣的事實,組運營商應用$項目後無法正常工作。我希望能夠將這些文件在另一個字段cID
上分組,這是可能的嗎?
您需要使用'$ cond'和'$ gt'運營商一起投影一個新領域並根據投影領域進行計算。請張貼一些示例數據以及您嘗試的內容。 – BatScream 2014-12-02 19:01:10
你可以粘貼完整的管道和關於'$ cond'的錯誤嗎?它絕對是一個真正的agg運算符,但它屬於'$ project'階段,而不是'$ match'階段。 – wdberkeley 2014-12-03 06:51:17