Arrays 根据字段值在mongodb中搜索数据
我正在使用mongodb和node.js。在我的数据库中,我有6个字段 投标 彩色阵列 大小数组 猫咪 子目录id 一切正常。现在我想在代码中添加过滤器。在过滤区域中,我添加了所有字段。用户选择多种颜色和大小,因此它将以数组格式出现,但大多数时候用户不会选择颜色选项或大小选项,此时字段值为空,因此我的过滤器不会从数据库中获取任何结果。所以,若在搜索过程中值为空,我想删除颜色或大小字段。我已经尝试了下面的代码,但它不工作。我如何做到这一点Arrays 根据字段值在mongodb中搜索数据,arrays,node.js,mongodb,search,filter,Arrays,Node.js,Mongodb,Search,Filter,我正在使用mongodb和node.js。在我的数据库中,我有6个字段 投标 彩色阵列 大小数组 猫咪 子目录id 一切正常。现在我想在代码中添加过滤器。在过滤区域中,我添加了所有字段。用户选择多种颜色和大小,因此它将以数组格式出现,但大多数时候用户不会选择颜色选项或大小选项,此时字段值为空,因此我的过滤器不会从数据库中获取任何结果。所以,若在搜索过程中值为空,我想删除颜色或大小字段。我已经尝试了下面的代码,但它不工作。我如何做到这一点 var catId = new Array();
var catId = new Array();
var sort = saveFilterSort.sort;
var filter = req.body;
if(req.body.catId){
catId.push("category_id:"+req.body.catId);
}
if(req.body.subcatid){
catId.push("sub_category_id:"+req.body.subcatid);
}
if(req.body.minprice){
catId.push("price:{$gt:"+req.body.minprice+"}");
}
if(req.body.maxprice){
catId.push("price:{$lt:"+req.body.maxprice+"}");
}
if(req.body.color){
catId.push("color:{$in:"+req.body.color+"}");
}
if(req.body.size){
catId.push("attribute:{$in:"+req.body.size+"}");
}
var finalCat = catId.join(',');
console.log(finalCat);
console.log(catId);
if((filter) && (sort)){
Product.find(
{
brand_id:bid, finalCat
},
function(error,fetchallFeatProds)
{
console.log('#######################');
console.log(fetchallFeatProds);
console.log('#######################');
callback(error,fetchallFeatProds);
}).sort( {_id:-1,price:-1} );
此代码不起作用。请帮帮我 Mongoose查找原型处理json而不是字符串
var query = {brand_id:bid};
var sort = saveFilterSort.sort;
var filter = req.body;
if(req.body.catId){
query.category_id = req.body.catId;
}
if(req.body.subcatid){
query.sub_category_id = req.body.subcatid;
}
if(req.body.minprice){
query.price = {$gt:req.body.minprice};
}
if(req.body.maxprice){
query.price = {$lt:req.body.maxprice};
}
if(req.body.color){
query.color = {$in:req.body.color};
}
if(req.body.size){
query.attribute = {$in:req.body.size};
}
if((filter) && (sort)){
Product.find(query, ...
Mongoose查找原型处理json而不是字符串
var query = {brand_id:bid};
var sort = saveFilterSort.sort;
var filter = req.body;
if(req.body.catId){
query.category_id = req.body.catId;
}
if(req.body.subcatid){
query.sub_category_id = req.body.subcatid;
}
if(req.body.minprice){
query.price = {$gt:req.body.minprice};
}
if(req.body.maxprice){
query.price = {$lt:req.body.maxprice};
}
if(req.body.color){
query.color = {$in:req.body.color};
}
if(req.body.size){
query.attribute = {$in:req.body.size};
}
if((filter) && (sort)){
Product.find(query, ...
什么是错误?finalCat只是一个字符串,它肯定不能作为查询使用,因为这需要一个object@WasiqMuhammad它就像绳子一样below@chridam我同意您的意见,先生,请检查以下内容['类别识别码:57ceb9c3714ba35d22c0f814','子类别识别码:57ceb9cf714ba35d22c0f815','价格:{$gt:556}','价格:{$lt:677}','属性:{$in:57bd9b0feb288f99247b23c7,57bd9baaeb288f28067b23c7}']什么是错误?finalCat只是一个字符串,当然不能作为查询,因为它需要object@WasiqMuhammad它就像绳子一样below@chridam先生,我同意你的意见,请查收下面的支票['类别id:57ceb9c3714ba35d22c0f814','子类别id:57ceb9cf714ba35d22c0f815','价格:{$gt:556}',价格:{$lt:677}','属性:{$in:57bd9b0feb288f99247b23c7,57bd9baaeb288f28067b23c7}',其给定的空白值见下文a是我的请求b在我的数据库值a中:{品牌识别码:57bd5cffcebed2a3189cedd0,类别识别码:'57ceb9c3714ba35d22c0f814',子类别识别码:'57ceb9cf714ba35d22c0f815',价格:{'$gt':'677',属性:{'$in':['57bd9b0feb288f99247b23c7','57BD9BAA288F28067B23C7']{品牌识别号:57bd5cffcebed2a3189cedd0,子分类识别号:57ceb9cf714ba35d22c0f815,分类识别号:57ceb9c3714ba35d22c0f814,描述:新夹克,sku:新夹克,名称:新夹克,识别号:ObjectId57ceba4a714ba35d22c0f818,属性▼: [57bd9b06eb288f27067b23c6,57bd9b0feb288f99247b23c7,57BD9B22EB88F19257B23C6,57bd9b50eb288f9a247b23c7],颜色:[57c562ce3c904bdb14114314,57CEB5F774BA35D22C0F7F9,57ceb609714ba35d22c0f7fa],]您有与这些过滤器对应的数据吗?如果您直接在mongo中输入此请求,会发生什么?如果我直接在数据库中输入它的“给我”值,直到它的给定空白值见下面a是我的请求b是我的数据库值a:{品牌识别码:57bd5cffcebed2a3189cedd0,类别识别码:'57ceb9c3714ba35d22c0f814',子类别识别码:'57ceb9cf714ba35d22c0f815',价格:{'$gt':'677',属性:{'$in':['57bd9b0feb288f99247b23c7','57BD9BAA288F28067B23C7']{品牌识别号:57bd5cffcebed2a3189cedd0,子分类识别号:57ceb9cf714ba35d22c0f815,分类识别号:57ceb9c3714ba35d22c0f814,描述:新夹克,sku:新夹克,名称:新夹克,识别号:ObjectId57ceba4a714ba35d22c0f818,属性▼: [57bd9b06eb288f27067b23c6,57bd9b0feb288f99247b23c7,57BD9B22EB88F19257B23C6,57bd9b50eb288f9a247b23c7],颜色:[57c562ce3c904bdb14114314,57CEB5F774BA35D22C0F7F9,57ceb609714ba35d22c0f7fa],]你们有和这些过滤器对应的数据吗?若你们直接在mongo中输入这个请求会发生什么?若我直接在数据库中输入它的值