2つのコレクションがあり、両方からフィールドを取得したいので、集約パイプラインで$lookup
を使用しています。
これは正常に動作し、0または1要素(オブジェクト)を持つ配列の余分なフィールドを持つすべてのドキュメントを返します。 0要素の場合は、JOIN
(SQLワールド内)が何も返さなかったことを意味します。 1要素の場合は、2番目のコレクションのフィールドを持つオブジェクトに要素と要素が一致したことを意味します。
私はこれらの結果を得ましたので、結果の一部をフィルタリングするために$match
を使用したいと思います。
$match
を使用するには、まず配列を抽出するために新しい追加フィールドに$unwind
を使用します。問題は、一度$unwind
ステージを挿入すると、クエリの結果は単一のドキュメントです。
どうしてですか?どのように$unwind
と$match
私は$lookup
ステージから得たすべての文書ですか?
'$ lookup'を実行したいが、条件でフィルタリングしたい場合はどうすればいいですか?そのようにして、新しく作成されたフィールドでは1(または0)の結果しか得られませんでした。それとも別の言葉で言えば、新しいフィールドに複数のオブジェクトがある場合、そのフィールドをフィルタリングしてオブジェクトを 'doc:2'のままにする方法はありますか? – alexandernst
あなたは '$ project'を使って文書の形を操作できます - これがあなたの答えに印をつけてくれたら: – profesor79
心配しないで、私はあなたの答えに印をつけます。 '$ project'を使ってどうやってやるのか少し説明できますか? – alexandernst