我发现自己遇到了我的第一次"我只是无法弄清楚如何使用mongo"问题
我有以下"架构":
收藏品不小; 元素最终将包含1亿个文档; 连接最终将包含大约2亿个文档。
我想要进行的查询是#34;给定一组元素ID S,找到两端都在S"中的连接集。 S的典型尺寸是几十万。
现在,如果我在mongo shell中这样做,那将会相对简单(前提是我没有想过粘贴一百万个值的数组;我确定有一个合理的方法可以定义这个,但你会在某个时刻看到为什么这不是重点:
var s = ["id1","id2",..."id99999"]
db.connections.find(
{
$and: [
{fst_id: {$in: s}},
{snd_id: {$in: s}}
]
}
)
这将是很好的,除了我通过传统的c ++驱动程序连接,所以我有权访问的是db连接类上的一个查询函数,它接受一个BSON对象。因此,我似乎仅限于生成以下代码(忽略构建命令的精细细节):
db.connections.find(
{
$and: [
{fst_id: {$in: ["id1","id2",..."id99999"]}},
{snd_id: {$in: ["id1","id2",..."id99999"]}}
]
}
)
这个庞大,可怕的阵列变得复制了。我可以把它当作必要的邪恶,我必须定义一次。定义它两次似乎是亵渎神明的。
我尝试通过db.system.js定义一个函数,但是我不能通过runCommand运行它而不需要用户拥有管理员权限,并且无论如何,只要有人询问,MongoDB社区就会响应NO。关于它。
我想我可以将序列数组保存在一个集合中,但是我有另外一个问题,即如何在另一个集合中查询一个集合。
我的选择,正如我看到的那样:
感谢您阅读此内容。