タイトルにあるように、ログイン時にユーザーから特定のデータを取得し、すべてのデータを集計して、集計されたデータを返そうとしています。 $match
関数を使用してみましたが、うまくいきませんでした。イライラするのは、オブジェクト配列内のすべてのデータを正常に返すことができることです。具体的には、次のコードは正常に実行され、オブジェクトの配列を返します:
しかし、このコードはそうではなく、空の配列を返します:
リーリーなぜこれが起こっているのかわかりません。返されるべきものは、すべての集計データが格納されたオブジェクトを含む配列です。
また、$match
を削除すると、実行中のコレクション内のすべてのデータが正常に集約されることもわかっているので、それと関係があると思います。
関連するコードはすべて次のとおりです:
ああああ
そこで、rickhg12hs の助けを借りて、
返された文字列を取得して新しい ObjectID に変換します。現在 ObjectID を比較しているため、機能します。{match: { user : req.user.id } }
が文字列と ObjectId を比較しようとしていると判断できました。 、これは機能しません。これは、私が設定した API がユーザー ID を ObjectID としてではなく文字列として返すためです。正しい値の型 (この場合は ObjectID) を比較していることを確認するには、次のようにします。 リーリードキュメント にあったようですが、私が十分に注意深く見ていなかっただけです