我希望有人可以帮助我的话题... 我有一个基于“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