【发布时间】:2020-08-16 03:21:45
【问题描述】:
我正在尝试从查询中获得以下响应。
{
users:[
user:{
name:"",
email:[
]
},
....user2
]
}
我有类似下面的东西。
我会这样说。一个用户可以拥有 n 台设备。他的每台设备可能有不止一封电子邮件。我想在设备上分组。并且用户字段应该具有该设备的通用信息。正如我们所想,名称将始终相同。还需要设备特定属性,例如 whatKindOfDevice、howManyIssuesAreThereInThatDevice、howManyCanBeAddressedByUpgrade、howManyAreRare 等。除此之外,我还需要获取该设备中使用的所有电子邮件,例如所有者、用户、关联 - 所有电子邮件。
认为我的文档 ID 与单个用户、单个设备无关。一个用户可以拥有任意数量的设备。一台设备可以有 n 个文档。
$group:{
"_id":"user_device_id",
"user": {
"$addToSet": {
"name":"$name",
"deviceName":"$deviceName",
"email": {"$addToSet":{}} //Something Similar I am expecting
}
}
}
如果我添加电子邮件外部用户,它可以工作 - 但它会影响所需的响应格式。
是否有可能或任何其他方式通过查询获得类似的响应?
假设一个用户可以拥有多个文档。在每个文档中,可能有相同或重复的电子邮件 ID。我正在努力解决这个问题。
请指教。
示例文档:
{
_id:ObjectId,
name:"user1",
email:"a@yahoo.com"
},
{
_id:ObjectId,
name:"user1",
email:"a@device.com"
},
..user2Doc
..user1Doc with another category, duplicate email i.e a@yahoo.com
..user2Doc with new email
..
【问题讨论】:
-
请分享示例文档。
-
@VijayRajpurohit 检查编辑。我试图模仿我的场景
-
请分享完整的文档和正确的所需输出。
标签: mongodb mongodb-query aggregation-framework