想要按用户对 mongoDB 个文档进行分组。但是在分组之后,我不希望用户的邮件字段再次出现在地址中。如何?
want to group mongoDB documents by user. but after grouping, I don't want the user's mail field to appear again in the addresses. how?
我的示例数据:
[
{
'user': 'aa@hotmail.com',
'AddressLine': 'jntgt',
'vat': 'gfgf',
'Companyname': 'gfgfg',
'countryName': 'mexico',
'AddressTitle': 'ev',
},
{
'user': 'aa@hotmail.com',
'AddressLine': 'gthh',
'vat': 'gfgf',
'Companyname': 'gfgfg',
'countryName': 'usa',
'AddressTitle': 'ev',
},
{
'user': 'bb@hotmail.com',
'AddressLine': 'gdgg',
'vat': 'gfgf',
'Companyname': 'ljjjhg',
'countryName': 'Angola',
'AddressTitle': 'ev',
},
];
我希望结果如下所示:
[
{
'user': 'aa@hotmail.com',
'addresses': [
{
'AddressLine': 'jntgt',
'vat': 'gfgf',
'Companyname': 'gfgfg',
'countryName': 'mexico',
'AddressTitle': 'ev',
},
{
'AddressLine': 'gthh',
'vat': 'gfgf',
'Companyname': 'gfgfg',
'countryName': 'usa',
'AddressTitle': 'ev',
},
],
},
{
'user': 'bb@hotmail.com',
'addresses': [
{
'AddressLine': 'gdgg',
'vat': 'gfgf',
'Companyname': 'ljjjhg',
'countryName': 'Angola',
'AddressTitle': 'ev',
},
],
},
]
mongodb聚合码应该怎么写?我试过这个:
[
{
$group: {
_id: '$user',
addresses: { $push: '$$ROOT' },
},
},
{
$project: {
user: '$_id',
addresses: 1,
},
},
];
好的。但是我在 root 中分组的用户再次出现。我如何在分组时删除用户。
您可以通过多种方式执行此操作,IMO 最简单的方法是在末尾添加另一个 $project
阶段以排除该字段,如下所示:
db.collection.aggregate([
{
$group: {
_id: "$user",
addresses: {
$push: "$$ROOT"
}
},
},
{
$project: {
user: "$_id",
addresses: 1,
}
},
{
$project: {
_id: 0,
"addresses.user": 0
}
}
])
我的示例数据:
[
{
'user': 'aa@hotmail.com',
'AddressLine': 'jntgt',
'vat': 'gfgf',
'Companyname': 'gfgfg',
'countryName': 'mexico',
'AddressTitle': 'ev',
},
{
'user': 'aa@hotmail.com',
'AddressLine': 'gthh',
'vat': 'gfgf',
'Companyname': 'gfgfg',
'countryName': 'usa',
'AddressTitle': 'ev',
},
{
'user': 'bb@hotmail.com',
'AddressLine': 'gdgg',
'vat': 'gfgf',
'Companyname': 'ljjjhg',
'countryName': 'Angola',
'AddressTitle': 'ev',
},
];
我希望结果如下所示:
[
{
'user': 'aa@hotmail.com',
'addresses': [
{
'AddressLine': 'jntgt',
'vat': 'gfgf',
'Companyname': 'gfgfg',
'countryName': 'mexico',
'AddressTitle': 'ev',
},
{
'AddressLine': 'gthh',
'vat': 'gfgf',
'Companyname': 'gfgfg',
'countryName': 'usa',
'AddressTitle': 'ev',
},
],
},
{
'user': 'bb@hotmail.com',
'addresses': [
{
'AddressLine': 'gdgg',
'vat': 'gfgf',
'Companyname': 'ljjjhg',
'countryName': 'Angola',
'AddressTitle': 'ev',
},
],
},
]
mongodb聚合码应该怎么写?我试过这个:
[
{
$group: {
_id: '$user',
addresses: { $push: '$$ROOT' },
},
},
{
$project: {
user: '$_id',
addresses: 1,
},
},
];
好的。但是我在 root 中分组的用户再次出现。我如何在分组时删除用户。
您可以通过多种方式执行此操作,IMO 最简单的方法是在末尾添加另一个 $project
阶段以排除该字段,如下所示:
db.collection.aggregate([
{
$group: {
_id: "$user",
addresses: {
$push: "$$ROOT"
}
},
},
{
$project: {
user: "$_id",
addresses: 1,
}
},
{
$project: {
_id: 0,
"addresses.user": 0
}
}
])