想要按用户对 mongoDB 文档进行分组。但分组后,我不希望用户的邮件字段再次出现在地址中。如何?
我的示例数据:
[
{
'user': '[email protected]',
'AddressLine': 'jntgt',
'vat': 'gfgf',
'Companyname': 'gfgfg',
'countryName': 'mexico',
'AddressTitle': 'ev',
},
{
'user': '[email protected]',
'AddressLine': 'gthh',
'vat': 'gfgf',
'Companyname': 'gfgfg',
'countryName': 'usa',
'AddressTitle': 'ev',
},
{
'user': '[email protected]',
'AddressLine': 'gdgg',
'vat': 'gfgf',
'Companyname': 'ljjjhg',
'countryName': 'Angola',
'AddressTitle': 'ev',
},
];
我希望结果如下所示:
[
{
'user': '[email protected]',
'addresses': [
{
'AddressLine': 'jntgt',
'vat': 'gfgf',
'Companyname': 'gfgfg',
'countryName': 'mexico',
'AddressTitle': 'ev',
},
{
'AddressLine': 'gthh',
'vat': 'gfgf',
'Companyname': 'gfgfg',
'countryName': 'usa',
'AddressTitle': 'ev',
},
],
},
{
'user': '[email protected]',
'addresses': [
{
'AddressLine': 'gdgg',
'vat': 'gfgf',
'Companyname': 'ljjjhg',
'countryName': 'Angola',
'AddressTitle': 'ev',
},
],
},
]
mongodb 聚合代码应该如何?我试过这个:
[
{
$group: {
_id: '$user',
addresses: { $push: '$$ROOT' },
},
},
{
$project: {
user: '$_id',
addresses: 1,
},
},
];
好的。但是我在root中分组的用户又出现了。当我分组时如何删除用户。
My sample data:
[
{
'user': '[email protected]',
'AddressLine': 'jntgt',
'vat': 'gfgf',
'Companyname': 'gfgfg',
'countryName': 'mexico',
'AddressTitle': 'ev',
},
{
'user': '[email protected]',
'AddressLine': 'gthh',
'vat': 'gfgf',
'Companyname': 'gfgfg',
'countryName': 'usa',
'AddressTitle': 'ev',
},
{
'user': '[email protected]',
'AddressLine': 'gdgg',
'vat': 'gfgf',
'Companyname': 'ljjjhg',
'countryName': 'Angola',
'AddressTitle': 'ev',
},
];
I want the result to look like this:
[
{
'user': '[email protected]',
'addresses': [
{
'AddressLine': 'jntgt',
'vat': 'gfgf',
'Companyname': 'gfgfg',
'countryName': 'mexico',
'AddressTitle': 'ev',
},
{
'AddressLine': 'gthh',
'vat': 'gfgf',
'Companyname': 'gfgfg',
'countryName': 'usa',
'AddressTitle': 'ev',
},
],
},
{
'user': '[email protected]',
'addresses': [
{
'AddressLine': 'gdgg',
'vat': 'gfgf',
'Companyname': 'ljjjhg',
'countryName': 'Angola',
'AddressTitle': 'ev',
},
],
},
]
How should mongodb aggregation code be? I tried this:
[
{
$group: {
_id: '$user',
addresses: { $push: '$ROOT' },
},
},
{
$project: {
user: '$_id',
addresses: 1,
},
},
];
ok. but The user I grouped in root appears again. how can i remove user when i group.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您可以通过多种方式执行此操作,IMO 最简单的方法是在末尾添加另一个排除该字段的
$project
阶段,如下所示:Mongo 游乐场
You can do this in multiple ways, the easiest way IMO is to just add another
$project
stage at the end that excludes that field, like so:Mongo Playground