से मेल नहीं खाता है, मैं आईड्स (56e641d4864e5b780bb992c6
और 56e65504a323ee0812e511f2
) द्वारा उत्पादों को दिखाना चाहता हूं और उपलब्ध होने पर छूट द्वारा घटाए जाने के बाद मूल्य दिखा सकता हूं।
मैं कुल का उपयोग कर अंतिम कीमत भरोसा कर सकते हैं, लेकिन इस वापसी एक संग्रह में सभी दस्तावेज़, कैसे यह केवल मैचों आईडी
"_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)
}
})
यही वह है, अब यह काम करता है। लेकिन आमतौर पर मैं idOneAndUpdate या अन्य क्वेरी में स्ट्रिंग के रूप में आईडी को फेंक देता हूं, और यह ठीक काम करता है, क्या समस्या केवल कुल में होती है? –
@ मुहम्मददासलीररहमान यह वही है जो मैंने जवाब दिया था। एक '.find()' 'स्कीमा 'का उपयोग कर सकता है जिसमें निश्चित रूप से' _id' फ़ील्ड के लिए' ऑब्जेक्ट आईडी 'का डिफ़ॉल्ट प्रकार है। एकत्रीकरण पाइपलाइन ** ** नहीं '** स्कीमा' का उपयोग करें, जैसा कि मैंने वास्तव में पहले ही समझाया है। –
यह मोंगोज़ 5 में काम नहीं कर रहा है –