2017-06-10 4 views
2

私は数千のノードを持つNeo4jデータベースを持っています。LIMIT句を使用したクエリから結果を取得する

MATCH (n:MYNODE) 
WHERE n.myfield CONTAINS {textToSearch} 
RETURN n 
ORDER BY n.myfield ASC 
LIMIT 50 

このクエリが働き、n.myfieldによる最初の50件の結果ordereを返します。

は、私が希望するフィールド内のテキストが含まれているノードを見つけるために、このクエリを使用しています。

たとえば、340個のノードが検索条件に一致したとしましょう。最初の50件が返されます。トータルカウントを返す方法はありますか?私は目的を表示するために総数(340)と一緒に50ノードを持っていたいと思います。

MATCH (n:MYNODE) 
WHERE n.myfield CONTAINS {textToSearch} 
RETURN count(n) 

2番目のクエリを回避して、最初の1で、この結果を含める方法があります:

は、私はこのような2番目のクエリをしますか? Neo4jは最初のクエリで50に制限する前に340のノードをすべて見つけなければならないので、LIMIT節が適用される前にノード数を傍受して戻す方法がありますか?

答えて

0

このような場合はどうですか。結果を注文してコレクションに入れます。その後、コレクションのサイズとコレクションの最初の50個のアイテムを返します。

MATCH (n:MYNODE) 
WHERE n.myfield CONTAINS {textToSearch} 
WITH n 
ORDER BY n.myfield 
WITH COLLECT(n) as matched 
RETURN size(matched), matched[..50] 
関連する問題