$lookup
是MongoDB 3.2中的新功能。它对同一数据库中的未整数集合执行左外连接,以便从“已连接”集合中过滤文档以进行处理。
要使用$lookup
,无法对from
集合进行分片。
另一方面,分片是一种有用的水平缩放方法。
一起使用它们的最佳做法是什么?
答案 0 :(得分:19)
正如您引用的文档所示,您不能在分片集合中使用$lookup
。因此,最佳实践解决方法是在单独的查询中自行执行查找。
aggregate
查询。Array#map
。find
{foreignField: {$in: localFieldArray}}
次查询
不要让$lookup
限制阻止您对需要它进行可伸缩性的集合进行分片,只需自己执行查找功能。
答案 1 :(得分:0)
如 MongoDb 文档中提到的“在 $lookup 阶段,无法对 from 集合进行分片。但是,可以对运行了aggregate() 方法的集合进行分片”https://docs.mongodb.com/manual/reference/operator/aggregation/lookup/
db.shardedCollection.aggregate([
{ $lookup: { from: "unshardedCollection", ... } }
])
这是一起使用它们的最佳做法