と一致しませんids(56e641d4864e5b780bb992c6
および56e65504a323ee0812e511f2
)で商品を表示し、値引きを引いて割引を引いた後に表示したいと考えています。
は私が集計を使用して、最終的な価格を数えることができますが、この戻りコレクション内のすべての文書は、どのようにそれが唯一の試合のid
"_id" : ObjectId("56e641d4864e5b780bb992c6"),
"title" : "Keyboard",
"discount" : NumberInt(10),
"price" : NumberInt(1000)
"_id" : ObjectId("56e65504a323ee0812e511f2"),
"title" : "Mouse",
"discount" : NumberInt(0),
"price" : NumberInt(1000)
"_id" : ObjectId("56d90714a48d2eb40cc601a5"),
"title" : "Speaker",
"discount" : NumberInt(10),
"price" : NumberInt(1000)
を返すようにするために、これは私のクエリです
productModel.aggregate([
{
$project: {
title : 1,
price: {
$cond: {
if: {$gt: ["$discount", 0]}, then: {$subtract: ["$price", {$divide: [{$multiply: ["$price", "$discount"]}, 100]}]}, else: "$price"
}
}
}
}
], function(err, docs){
if (err){
console.log(err)
}else{
console.log(docs)
}
})
と私はこの$in
クエリを追加する場合、それは
productModel.aggregate([
{
$match: {_id: {$in: ids}}
},
{
$project: {
title : 1,
price: {
$cond: {
if: {$gt: ["$discount", 0]}, then: {$subtract: ["$price", {$divide: [{$multiply: ["$price", "$discount"]}, 100]}]}, else: "$price"
}
}
}
}
], function(err, docs){
if (err){
console.log(err)
}else{
console.log(docs)
}
})
これで終わりです。しかし、通常はidをfindOneAndUpdateや他のクエリの文字列としてスローします。問題は集約でしか起こりませんか? –
@MuhammadFasalirRahmanこれはまさに私が答えたものです。 '.find()'は 'Schema'を使うことができます。もちろん' _id'フィールドには 'ObjectId'のデフォルトタイプがあります。私が実際に説明したように、集約パイプラインは 'Schema'を使用しません**。 –
これはマングース5で動作していません –