带有APOC和MongoDB驱动程序的Neo4J,限制了Mongo的返回记录

时间:2017-11-23 18:56:42

标签: java mongodb neo4j cypher neo4j-apoc

限制MongoDB中返回记录的数量非常简单 db.collection.find().limit(n)。 但是我想从Neo4J发出等效查询。

鉴于从Neo4J发出查询查询如下... apoc.mongodb.find(host, db, collection, query, project, sort) 我发现在流式传输到Neo4J之前,很难看出应该如何告诉MongoDB实例限制返回的结果。

我知道Cypher的LIMIT条款,但考虑到将从Mongo流式传输的冗余数据量,这感觉就像是不好的做法。

是否还有一种方法可以在预流中为查询结果添加限制?

1 个答案:

答案 0 :(得分:1)

此时此功能尚未开箱即用。但您可以添加此功能。

APOC source code中进行以下更改:

line = line.split(',') print line

neo4j-apoc-procedures/src/main/java/apoc/mongodb/MongoDB.java
@Procedure
@Description("apoc.mongodb.find(host-or-port,db-or-null,collection-or-null,query-or-null,projection-or-null,sort-or-null,[compatibleValues=true|false]) yield value - perform a find,project,sort operation on mongodb collection")
public Stream<MapResult> find(@Name("host") String hostOrKey, @Name("db") String db, @Name("collection") String collection, @Name("query") Map<String, Object> query, @Name("project") Map<String, Object> project, @Name("sort") Map<String, Object> sort, @Name(value = "compatibleValues", defaultValue = "false") boolean compatibleValues) {
    return getMongoColl(hostOrKey, db, collection, compatibleValues).find(query, project, sort).map(MapResult::new);
}

interface Coll extends Closeable { ... Stream<Map<String, Object>> find(Map<String, Object> query, Map<String, Object> project, Map<String, Object> sort, Map<String, Object> pagination);

neo4j-apoc-procedures/src/main/java/apoc/mongodb/MongoDBColl.java