mongodb组聚合管道包括objectId(_id)

时间:2013-03-04 20:08:56

标签: mongodb aggregation-framework

我在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添加为输出之一。我该如何实现?

1 个答案:

答案 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'}}})