要使用图查询$graphLookup mongodb的版本必须在3.4以上
可以使用db.version()查看
现用官方给的例子测试:
db.employees.insert({ "name" : "Dev"})
db.employees.insert({ "name" : "Ron", "reportsTo" : "Eliot" })
db.employees.insert({ "name" : "Andrew", "reportsTo" : "Eliot"})
db.employees.insert({"name" : "Asya", "reportsTo" : "Ron"})
db.employees.insert({"name" : "Dan", "reportsTo" : "Andrew" })
db.employees.aggregate( [
{
$graphLookup: {
from: "employees",
startWith: "$reportsTo",
connectFromField: "reportsTo",
connectToField: "name",
as: "reportingHierarchy"
}
}
] )
数据量小查询很快:
接下来用一个实际点的例子来测试:
16万条行业分类数据 通过子节点找父节点
db.company_industry_category.aggregate([
{
$graphLookup: {
from: "company_industry_category",
startWith: "$parentName",
connectFromField: "parentName",
connectToField: "name",
as: "parent"
}
}
])
没加索引之前查询时间为410秒 ,完全不能接受的慢。。。
加了索引之后 时间缩短到6.8秒 勉强可用