私はショッピングカートを開発していますが、私の現在の要件はショップオーナーにダッシュボードを表示することです。商品名に重複がある可能性があるため、商品IDで注文商品をグループ化し、合計注文数を持つように合計を実行しました。今私も読める名前が必要ですが、そうすることはエラーを発生させます。mongoDB/mongoose集約パイプラインを使用してカスタムフィールドに基づいて集計値を設定するにはどうすればよいですか?
クエリ
ShoppingCart
.aggregate({ $match: { "orderedProducts.registrationDetails.createdByID": LOGGED_IN_ADMIS_ID } })
.project("orderedProducts.productID orderedProducts.title orderedProducts.qty -_id")
.unwind("orderedProducts")
.group({ _id: "$orderedProducts.productID", counts: { $sum: "$orderedProducts.qty" }, title: "$orderedProducts.title" })
.exec((err, docs) => {
if (err) {
return res.status(503).send(err);
}
res.send(docs);
});
エラーメッセージ:
{ "名": "MongoError"、 "メッセージ":「、 "フィールド 'タイトルは' アキュムレータオブジェクトでなければなりません" OK ":0、" ERRMSG ":" フィールド 'タイトル' アキュムレータオブジェクト」、 "コードでなければなりません":40234、 "コードネーム": "Location40234"}
は、これがどの部分でありますエラーの原因ですタイトル: "$ orderedProducts.title"
親愛なる@imixtronご意見ありがとうございます。問題は、私の場合、製品の名前がユニークではないということです。ユーザーが全く同じ名前の2つ以上の異なる製品を作成する可能性があるため、名前の代わりに製品IDで製品をグループ化していたのはこのためです。 – Taha
私のクエリは** _ id **に基づくグループ化と同じです。グループ化されたすべてのドキュメントには同じものがあります。したがって、最初か最後かを選択することができます。 – imixtron
申し訳ありませんが、私は間違っていた、訂正のおかげで。 – Taha