我希望有人可以幫助我的話題... 我有一個基於「Tickets,Tasks and Comentaries(Coms)」結構的mongoDB查詢,Tickets數組通常包含Tasks數組和Coms數組,所以我需要展開它們。我的代碼是:比較MongoDB中不同數組的兩個字段
db.tickets.aggregate([
{$unwind : "$Coms" },
{$match:{
'Tsks.Sts': 'Closed', //Status: tasks which are closed
'Coms.TicTskId': {$eq: '$Tsks._id'},**
'Coms.Typ':'CloseTask'
}},
{$project:{
_id:0,
'Tsks._id':1,
'Tsks.Sts':1,
'Tsks.DueDat':1,
'Nms.Org':1,
'Nms.Cmp':1,
'Nms.Wkg':1,
'Coms.Typ':1,
'Coms.Msg': 1,
'Coms.TicTskId':1
}},
{$unwind : "$Tsks" },
{$match:{$and:[{
'Tsks.Sts': 'Closed',
'Tsks.DueDat': {$ne: null},
'Tsks._id':{$gt:0}
}]}},
{$group:
{_id:{Org:'$Nms.Org',Cmp:'$Nms.Cmp',Wkg:'$Nms.Wkg', DueDate:'$Tsks.DueDat', CurTskId: '$Tsks._id',Type:'$Coms.Typ',Msg: '$Coms.Msg', TicTskId: '$Coms.TicTskId'},
Total_Closed:{$sum:1},
}},
{$project:{
Total_Closed : 1,
Comparation: {$cmp: [ '$CurTskId', '$TicTskId']},
Equal: {$eq: [ "$CurTskId", "$TicTskId"]},
}},
{
$sort : {CurEntNme:-1,Org: 1,Cmp : 1 ,Wkg: 1 }
}
])
我試圖顯示一組需要遵循這些特徵的任務:
"Sts":"Closed", --> Status should be Closed
'Tsks.DueDat': {$ne: null}, --> Tasks DueDate shouldn't be null
'Coms.Typ':'CloseTask', --> Coments type should be "CloseTask"
'Coms.TicTskId' == '$Tsks._id' --> Comments ID should be as same as Tasks ID
我在這裏的主要問題是,我無法找到獲得方式只有具有所有這些分組條件的值,我的意思是,除了最後一個ID,當兩個ID都相等時,我看不到所有條件。我只希望看到所有的iqual,但是這個查詢返回兩個,如果它們相等或不相等則獨立。例如,一個結果我得到:
result:
[item]
_id:
Org--> Organization
Company --> Organization 1
Wkg --> WKG 1
DueDate --> 2015-04-10 15:00:00.000Z
CurTskId --> 7
Type --> CloseTask
Msg --> these is close
TicTskId --> 1
Total_Closed --> 1
Comparation --> 0
Equal --> true
比較 - 不應該是0,因爲CurTskId和TicTskId不 類似
相等的,因爲CurTskId和TicTskId不相似不應該是真實的
一層數據庫結構如下:
>(1) 12000000 {7 fields} Object
_id 12000000 Int64
TicId 1001 Int32
OrgId 2 Int32
Sts Closed String
>Nms {3 fields} Object
Cmp Organization 1 String
Org Organization String
Wkg Workgroup String
>Tsks {3 fields} Object
_id 1 Int32
Sts Closed String
DueDat 2015-04-10 Date
>Coms {3 fields} Object
TicTskId 7 Int32
Typ CloseTask String
Msg these is close String
我希望我能以最好的方式解釋我的問題,如果我的英語不太好,很抱歉。
在此先感謝。
歡迎來到StackOverflow!您能否請您嘗試在您的問題中包含實際代碼而不是圖像,因爲圖像中的代碼無法複製並粘貼到編輯器中並進行編譯以重現問題。在爲什麼通常不推薦在SO上發佈代碼圖像的許多其他原因中,圖像很大並且難以在移動設備上閱讀,它們不能被搜索,因此對於未來的讀者是沒有用的。你要求我們自由地解決你的問題,我們應該儘可能地容易地做到這一點。 – chridam
嗨chridam,抱歉的圖像,我編輯我的帖子試圖解釋我的問題盡我所能沒有上傳任何圖像在第三個網站。我有一個我不能分享的具體法人數據庫,所以我希望有人能夠理解我的問題,自從幾個星期前我一直在調查這個問題。感謝您的評論和親切的問候。 –
感謝您付出努力更新問題。我知道你有一個你不能共享的特定公司數據庫,但是你能否用一些樣本測試文件集合來更新你的問題,這些文件包含測試數據和我們可能複製的預期聚合結果,測試並提供解決方案或建議?事實上,如果沒有一些測試數據可以付諸實施,這是有點困難的。 – chridam