2017-10-20 14 views
0

、私はこのようになります構造:firestoreのORDERBY(サブコレクション)

{ 
    ... 
    "username": "mr_jones", 
    "date_created": 1508395138572, 
    "stats": { 
     "posts": 143, 
     ... 
    }, 
    ... 
} 

文書によると、私はwhereに基づいてデータをフィルタリングするために、私のクエリをorder and limitできます句。 stats.postsに基づいてこのデータを注文するにはどうすればよいですか?あなたのコードのタイプミスを持っているよう

usersRef.orderBy('stats.posts').limit(15); 
+0

'usersRef.orderBy( '​​stats.post')。limit(15)'は私に似ています。試してみるとどうなりますか?エラーが発生していますか? –

+0

@MichaelLehenbauer私はそれがmongoDbクエリに似ていると予想していましたが、プロパティを使用するたびに結果セットには何の影響もないようです。 – Felipe

答えて

2

すなわち

はルックス:

usersRef.orderBy('stats.post').limit(15); 

フィールド名が以前の構造に応じてstats.posts次のようになります。

usersRef.orderBy('stats.posts').limit(15); 

私は」これはダブルチェックしました。コンソールでは、私はtesterと呼ばれるコレクションを作成し、4つのドキュメントを格納します。各ドキュメントのstats.postsプロパティには1から4までの数字が設定されています。以下のコードは1,2,3を出力します。制限を削除すると、1、2、3、4が出力されます。 2、1、3、4が出力されます。

db.collection('tester').orderBy('stats.posts').limit(3).get().then(function(querySnapshot) { 
    querySnapshot.forEach(function(documentSnapshot) { 
     console.log(documentSnapshot.data().stats.posts); 
    }); 
}); 
+0

実際にはタイプミスですが、私は質問を編集しました。プロパティアクセサが指定されたときに 'orderBy'式はクエリに影響を与えないように見えます – Felipe

+0

あなたはGoogleのクラウド部門で働いているようです。この構文は正式にサポートされていますか?私はこのようなドキュメンテーションで例を見なかった。 – Felipe

+0

私は、Cloud Firestoreのプロダクトマネージャーです。それは、私はそれを自分自身でテストし、完璧に働いた。それがうまくいかない場合は、動作していないもの(エラーや出力など)に関する詳細情報を投稿する必要があります。 –

関連する問題