mirror of https://gitee.com/bigwinds/arangodb
added any expander
This commit is contained in:
parent
dc9969fb27
commit
a2373b7036
|
@ -467,6 +467,31 @@ function CollectionInboundExpander (config, vertex, path) {
|
||||||
return connections;
|
return connections;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
/// @brief default "any" expander function
|
||||||
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
function CollectionAnyExpander (config, vertex, path) {
|
||||||
|
var connections = [ ];
|
||||||
|
var edges = config.edgeCollection.edges(vertex._id);
|
||||||
|
|
||||||
|
if (edges.length > 1 && config.sort) {
|
||||||
|
edges.sort(config.sort);
|
||||||
|
}
|
||||||
|
|
||||||
|
edges.forEach(function (edge) {
|
||||||
|
try {
|
||||||
|
var vertex = internal.db._document(edge._from);
|
||||||
|
connections.push({ edge: edge, vertex: vertex });
|
||||||
|
}
|
||||||
|
catch (e) {
|
||||||
|
// continue even in the face of non-existing documents
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
return connections;
|
||||||
|
}
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////////////////////
|
||||||
/// @brief default expander that expands all edges labeled with one label in config.labels
|
/// @brief default expander that expands all edges labeled with one label in config.labels
|
||||||
///////////////////////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
@ -664,6 +689,7 @@ ArangoTraverser.EXCLUDE = 'exclude';
|
||||||
exports.Traverser = ArangoTraverser;
|
exports.Traverser = ArangoTraverser;
|
||||||
exports.CollectionOutboundExpander = CollectionOutboundExpander;
|
exports.CollectionOutboundExpander = CollectionOutboundExpander;
|
||||||
exports.CollectionInboundExpander = CollectionInboundExpander;
|
exports.CollectionInboundExpander = CollectionInboundExpander;
|
||||||
|
exports.CollectionAnyExpander = CollectionAnyExpander;
|
||||||
exports.VisitAllFilter = VisitAllFilter;
|
exports.VisitAllFilter = VisitAllFilter;
|
||||||
exports.TrackingVisitor = TrackingVisitor;
|
exports.TrackingVisitor = TrackingVisitor;
|
||||||
exports.MinDepthFilter = MinDepthFilter;
|
exports.MinDepthFilter = MinDepthFilter;
|
||||||
|
|
|
@ -2316,17 +2316,6 @@ function AHUACATL_TRAVERSE_VISITOR (config, result, vertex, path) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////////
|
|
||||||
/// @brief filter callback function for traversal
|
|
||||||
////////////////////////////////////////////////////////////////////////////////
|
|
||||||
|
|
||||||
function AHUACATL_TRAVERSE_FILTER (config, vertex, path) {
|
|
||||||
if (config.maxDepth != null && config.maxDepth != undefined && path.edges.length >= config.maxDepth) {
|
|
||||||
return "prune";
|
|
||||||
}
|
|
||||||
return "";
|
|
||||||
}
|
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
/// @brief traverse a graph
|
/// @brief traverse a graph
|
||||||
////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
@ -2372,10 +2361,9 @@ function AHUACATL_GRAPH_TRAVERSE () {
|
||||||
'forward': traversal.Traverser.FORWARD,
|
'forward': traversal.Traverser.FORWARD,
|
||||||
'backward': traversal.Traverser.BACKWARD
|
'backward': traversal.Traverser.BACKWARD
|
||||||
}),
|
}),
|
||||||
maxDepth: params.maxDepth,
|
|
||||||
trackPaths: params.paths || false,
|
trackPaths: params.paths || false,
|
||||||
visitor: AHUACATL_TRAVERSE_VISITOR,
|
visitor: AHUACATL_TRAVERSE_VISITOR,
|
||||||
filter: AHUACATL_TRAVERSE_FILTER,
|
filter: params.maxDepth != undefined ? traversal.MaxDepthFilter : VisitAllFilter,
|
||||||
expander: validate(direction, {
|
expander: validate(direction, {
|
||||||
'outbound': traversal.CollectionOutboundExpander,
|
'outbound': traversal.CollectionOutboundExpander,
|
||||||
'inbound': traversal.CollectionInboundExpander,
|
'inbound': traversal.CollectionInboundExpander,
|
||||||
|
|
Loading…
Reference in New Issue