用户将输入输入名称和宽带速度,如下所示
姓名: shankar
速度 10Mbps的
然后我需要显示
名称: Shankar
速度: 10Mbps
使用的数据: 500MB
从下面给出样本mongodb文件结构如何在mongoDB中查询?
父记录是:
{
subscriber_id:001
名称:尚卡尔
total_data_used:1000MB
时间戳:2016年8月1日00:03:00
}
{
subscriber_id:002
姓名:约翰
total_data_used:2000MB
时间戳:2016年8月1日00:10:00
}
详细信息或子记录如下:
{
subscriber_id:001
服务:10Mbps的
时间戳:2016年8月1日00:01:00
total_data_usage:500MB
}
{
subscriber_id:001
服务:10Mbps的
total_data_usage:500MB
时间戳:2016年8月1日00:02:00
}
{
subscriber_id:002
服务:10Mbps的
时间戳:2016年8月1日00:07:00
total_data_usage:1000MB
}
{
subscriber_id:002
服务:10Mbps的
total_data_usage:1000MB
时间戳:2016年8月1日00:08:00
}
任何人都告诉我在mongodb查询中如何检索
的问候,
香卡
答案 0 :(得分:1)
此查询应该有效。第一个“查找”阶段根据subscriber_id字段将子集合与父集合连接起来。它将父文件集中的所有文档附加到子文档的subscriber_details数组中。
在您的情况下,这将是第一阶段之后的输出。
{ subscriber_id:001, 服务:10Mbps的, 时间戳:2016年8月1日00:01:00, total_data_usage:500MB, subscriber_details:[{ subscriber_id:001, 名称:shankar, total_data_used:1000MB, 时间戳:2016年8月1日00:03:00 }] }
{ subscriber_id:001, 服务:10Mbps的, total_data_usage:500MB, 时间戳:2016年8月1日00:02:00, subscriber_details:[{ subscriber_id:001, 名称:shankar, total_data_used:1000MB, 时间戳:2016年8月1日00:03:00, }] }
在此阶段之后,我使用“匹配”来过滤输入条件,然后使用“项目”阶段以您希望的形式获取输出。
db.child.aggregate([
{
$lookup:
{
"from": "parent",
"localField": "subscriber_id",
"foreignField": "subscriber_id",
"as": "subscriber_details"
}
},
{
$match:
{
"service":"<input_speed>",
"subscriber_details.name":"<input_name>"
}
},
{
$project:
{
"_id":0
"Name":"$subscriber_details.0.name"
"Speed":"$service"
"Data Used":"$total_data_usage"
}
}])