0

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

4

1 回答 1

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

于 2013-03-05T04:45:44.400 回答