【发布时间】:2016-11-19 06:53:38
【问题描述】:
考虑以下 3 个文档(简化):
{
"name" : "Alex Ham",
"opponents" : [
{
"location" : "west",
"position" : 5
},
{
"location" : "north",
"position" : 7
},
{
"location" : "east",
"position" : 2
}
]
},
{
"name" : "John Flex",
"opponents" : [
{
"location" : "north",
"position" : 9
},
{
"location" : "north",
"position" : 4
},
{
"location" : "south",
"position" : 2
}
]
},
{
"name" : "Adam Will",
"opponents" : [
{
"location" : "east",
"position" : 6
},
{
"location" : "south",
"position" : 8
}
]
}
我需要按数组opponents 中的项目序列匹配文档。我将有整数,例如 572、942、68 等。整数的每个数字代表opponents 数组中的position。
例如,对于 572,我需要匹配第一个文档 (Alex Ham),因为如果您查看 opponents 数组,项目的序列及其 position 字段分别为 5、7 和 2。
对于 942,我必须匹配第二个文档 (John Flex),对于 68,我必须匹配第三个文档 (Adam Will),依此类推。
考虑到拥有大量数据(几百万个文档),并考虑到性能,我如何构建一个聚合管道来匹配上述案例的文档。
【问题讨论】:
标签: mongodb mongodb-query aggregation-framework