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