$lookup
是 MongoDB 3.2 中的新增功能。它对同一数据库中的未分片集合执行左外联接,以从“联接”集合中过滤文档进行处理。
To use $lookup
, the from
集合不能被分片。
另一方面,分片是一种有用的水平扩展方法。
一起使用它们的最佳实践是什么?
正如您引用的文档所示,您不能使用$lookup
在分片集合上。因此,最佳实践解决方法是在单独的查询中自行执行查找。
- 执行你的
aggregate
query.
- 将查询结果中的“localField”值拉入数组,可能使用Array#map https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map.
- 执行一个
find
使用类似的查询对“from”集合进行查询{foreignField: {$in: localFieldArray}}
- 将您的结果合并为您需要的任何格式。
不要让$lookup
限制阻止您对需要它以实现可扩展性的集合进行分片,只需自己执行查找功能即可。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)