sql >> データベース >  >> NoSQL >> MongoDB

MongoDB $ geoNear集計パイプライン(クエリオプションを使用し、$ matchパイプライン操作を使用)結果の数が異なる

    いくつかの仮定:-
    1。場所に基づいて一致する300のレコードがあると想定します。
    2。 100件の結果の最初のセットにタグピザがないと仮定します。残りの200のドキュメント(101から300)にはタグピザがあります

    クエリ1:-

    • 2つのパイプライン操作$geoNearと$matchがあります
    • $ geoNearパイプライン操作の出力は、$matchpipeline操作への入力です
    • $ geoNearは、最も近い距離から遠い距離で並べ替えられた場所に基づいて、最大100件の結果(指定した制限)を検索します。 (ここで、取得された100件の結果は純粋に場所に基づいていることに注意してください。したがって、これらの100件の結果には、タグ「pizza」の付いたドキュメントは含まれていません)
    • これらの100個の結果は、フィルタリングが行われる次のパイプライン操作$matchに送信されます。しかし、100件の結果の最初のセットにはタグピザがなかったため、出力は空です

    クエリ2:-

    • パイプライン操作は1つだけです$geoNear
    • $geoNearパイプライン操作に含まれるクエリフィールドがあります$geoNearは、最も近い距離とquerytag =pizzaで並べ替えられた場所に基づいて、最大100件の結果(指定した制限)を検出します
    • ここで、クエリがパイプライン操作$ geoNearに含まれているため、101から200までの結果が出力として返されます。つまり、単純な文で、場所が[x、y] withtag=pizzaのすべてのドキュメントを検索します。

    追伸:-$ groupパイプラインステージは、カウントを取得するためだけに追加されているため、説明には記載されていません



    1. 親ドキュメントが存在しない可能性がある場合は、MongoDBサブドキュメントを更新します

    2. mongodb / node.jsの既存のコレクションに自動インクリメントを追加するにはどうすればよいですか?

    3. Node.jsでMongoDB接続が有効かどうかを確認する方法

    4. 参照モデルのフィールドごとのモデルに対するマングースのネストされたクエリ