限制MongoDB中返回记录的数量非常简单
db.collection.find().limit(n)
。
但是我想从Neo4J发出等效查询。
鉴于从Neo4J发出查询查询如下...
apoc.mongodb.find(host, db, collection, query, project, sort)
我发现在流式传输到Neo4J之前,很难看出应该如何告诉MongoDB实例限制返回的结果。
我知道Cypher的LIMIT条款,但考虑到将从Mongo流式传输的冗余数据量,这感觉就像是不好的做法。
是否还有一种方法可以在预流中为查询结果添加限制?
答案 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