我得到了一個產品架構。我希望能夠查詢它們并按折扣排序。價格由一個名為 price 的陣串列示,最新的元素是最新的值。即我希望在查詢中首先獲得折扣最高的產品。
架構:
const mongoose = require('mongoose');
const ProductsSchema = new mongoose.Schema(
{
productName: {
type: String,
},
price: [
{
date: {
type: String,
},
value: {
type: Number,
},
},
],
},
{ collection: 'products' }
);
const products = mongoose.model('products', ProductsSchema);
module.exports = products;
uj5u.com熱心網友回復:
查詢1
- 添加一個名為折扣的欄位
- 折扣= priceN-princeN-1(最后2個價格的差價),這里是最新的折扣
- 如果產品有 < 2 個價格折扣 = 0
測驗代碼在這里
aggregate(
[{"$set":
{"discount":
{"$cond":
[{"$lte":[{"$size":"$price"}, 1]}, 0,
{"$subtract":
[{"$last":"$price.value"},
{"$arrayElemAt":
["$price.value", {"$subtract":
[{"$size":"$price"}, 2]}]}]}]}}},
{"$sort":{"discount":-1}}])
查詢2
- 和上面一樣
- 折扣 = lastPrice - minPrice
*您可以替換$last用$max得到的所有時間最大折扣
aggregate(
[{"$set":
{"discount":
{"$cond":
[{"$lte":[{"$size":"$price"}, 1]}, 0,
{"$subtract":
[{"$last":"$price.value"}, {"$min":"$price.value"}]}]}}},
{"$sort":{"discount":-1}}])
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/387313.html
標籤:javascript MongoDB 猫鼬
