MongoDb には現在、以下に示すようなドキュメントがあります。以下のような書類が複数あります。たとえば、少なくとも 16 進値 BA4D2A の 25% と FFAB23 の 75% を含むイメージ パスのみをプルバックしたいと考えています。
{
"__v": 0,
"_id": {
"$oid": "51c1ac95f502f20969000022"
},
"hex": "BA4D2A",
"img": [
{
"path": "http://example.com/image1.jpg",
"perc": 10,
"_id": {
"$oid": "51c1ac95f502f20969000023"
}
},
{
"path": "http://example.com/image2.jpg",
"perc": 20,
"_id": {
"$oid": "51c1ac95f502f20969000034"
}
}
]
}
以前の質問から親切に助けを得た後、特定のパーセンテージ量を超えるすべての16進値を探していた場合、パスを引き戻すのに非常に役立つ以下のクエリがありますが、処理できるようにしたいことに気付きました各 16 進値ごとに個別のパーセンテージ。
私が Mongoose/MongoDb を使い始めてまだ 4 日ほど経っていないので、これを行うためのより良い方法 (アーキテクチャに関して) があれば、私はアイデアを受け入れます。このアプローチは、ドキュメントとグーグルを読んで思いついたものです。
clrModel.find({
hex: {$in: [ "5B6D8B", "BA4D2A" ] } ,
'img.perc': {$gte: 5}
} ,
'img.path',
function(error,data){
//Handle my data res accordingly
});
};
EDIT ----------- 以下のコード ブロックを使用して、必要なものに少し近づけることができましたが、すべての基準を満たすパスのみが必要です。以下のクエリは、個々の 16 進クエリごとにすべての結果を返しますが、意味がある場合は、16 進値とそのパーセンテージの両方を含む画像のみのパスが必要です。
clrModel.find({
$or: [
{hex: "5B6D8B", 'img.perc':{$gte: 5}},
{hex: "BA4D2A", 'img.perc':{$gte: 12}}
],
} ,
'img.path',
function(error,data){ });