我在mongodb下面有一个管道。
pipeline.push({ $project: { 'name1': 1, isGroup: { $cond: [{ $eq: ['$name2', '']}, false, true]}, onlyGroup: 1, 'objecttype':1 } })
pipeline.push({ $group: { _id: { 'name1': '$name1', isGroup: '$isGroup', onlyGroup: '$onlyGroup', 'objecttype': '$objecttype'} } })
pipeline.push({ $sort: { _id: 1 } })
pipeline.push({ $project: { 'name1': '$_id.name1', isGroup: '$_id.isGroup', 'objecttype': '$_id.objecttype', onlyGroup: '$_id.onlyGroup' } })
break;
如您所见,输出为name1,isGroup,objecttype,onlyGroup。
我想将_id添加为输出之一。我该如何实现?
答案 0 :(得分:0)
_id但必须将其带入组内,否则在组后,组中未包括的所有内容都将被排除。
所以这就是为我解决这个问题的原因。由于我必须得到其他一些领域,下面的解决方案也很完美。
pipeline.push({$ project:{'name1':1,isGroup:{$ cond:[{$ eq:['$ name2','']},false,true]},onlyGroup:1, 'objecttype':1,idd:'$ _ id'}})
pipeline.push({$ group:{_ id:{'name1':'$ name1',isGroup:'$ isGroup',onlyGroup:'$ onlyGroup'},objecttype:{$ push:'$ objecttype'} ,idd:{$ push:'$ idd'}}})