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 です。

出力の 1 つとして _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 に答える