在MongoDb中,我目前的文档类似于下面显示的文档。我有多个文件,如下图所示。例如,我想只撤回包含至少25%的十六进制值BA4D2A和75%的FFAB23的图像路径。
{
"__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"
}
}
]
}
在从上一个问题获得帮助之后,如果我正在寻找具有超过单个指定百分比量的所有十六进制值,我有以下查询对于拉回路径非常有效,但我意识到我想成为能够为每个十六进制值单独处理每个百分比。
如果你不能告诉我在玩Mongoose / MongoDb大约4天的时间,那么如果有更好的方法(建筑方面),我愿意接受各种想法。这种方法只是我通过阅读文档和谷歌而提出的。
clrModel.find({
hex: {$in: [ "5B6D8B", "BA4D2A" ] } ,
'img.perc': {$gte: 5}
} ,
'img.path',
function(error,data){
//Handle my data res accordingly
});
};
编辑----------- 我已经设法通过下面的代码块获得了更接近我想要的东西,但我只想要满足所有条件的路径。下面的查询返回每个单独的十六进制查询的所有结果,但我想要只包含十六进制值及其百分比的图像的路径,如果这是有意义的。
clrModel.find({
$or: [
{hex: "5B6D8B", 'img.perc':{$gte: 5}},
{hex: "BA4D2A", 'img.perc':{$gte: 12}}
],
} ,
'img.path',
function(error,data){ });
答案 0 :(得分:1)
我认为问题是你构建条目的方式。每个文档只有一个十六进制字段,这意味着文档不可能包含这两个值。要查询您想要的内容,每个路径名都需要有一个关联的十六进制值和百分比数组,这样您就可以执行一个有效的$和查询。