SOユーザーの皆さん、こんにちは。
ドキュメントからは単純に理解できない高度なMongooseクエリに遭遇しました。
まず、数学で並べ替えたいと思います。基本的に、2 つのオブジェクトの価格差でソートできるようにしたいと考えています。基本的な数値を含む「price」と「oldprice」があります。次に、それらを差し引いて、割引率が高い順に並べ替えたいと思います。したがって、SQLでは次のようになります
ORDER BY (oldprice - price)
私が遭遇した別の問題は、文字列配列による文字列配列のフィルタリングです。
基本的に、複数のサイズを含む [size] オブジェクト (文字列配列) を持つ「パンツ」モデルがあります。ここで、複数のユーザーが選択したサイズでデータベースを検索し、選択したサイズの 1 つを含むすべてのパンツを検索できるようにしたいと考えています。
私はやってみました:
Pants.find({
name: new RegExp(search, 'ig'),
sizes: {
$in: [selectedSizes]
}
}).skip(skip).limit(limit).sort(sort).execFind(function(err, pants) {
return res.send(pants);
});
「selectedSizes」に 1 つの値が含まれている場合は問題なく動作しますが、複数の値では失敗します。
誰かがいくつかのアイデアを持っていることを願っています;-)
パンツモデル:
var PantsSchema;
PantsSchema = new mongoose.Schema({
supplier: {
type: String
},
manufacturer: {
type: String
},
web: {
type: String
},
name: {
type: String
},
link: {
type: String,
required: true,
unique: true
},
image: {
type: String
},
sizes: {
type: [String]
},
price: {
type: Number
},
oldprice: {
type: Number
},
added: {
type: Date,
"default": Date.now
},
updated: {
type: Date
}
});