Arrays 根据字段值在mongodb中搜索数据

Arrays 根据字段值在mongodb中搜索数据,arrays,node.js,mongodb,search,filter,Arrays,Node.js,Mongodb,Search,Filter,我正在使用mongodb和node.js。在我的数据库中,我有6个字段 投标 彩色阵列 大小数组 猫咪 子目录id 一切正常。现在我想在代码中添加过滤器。在过滤区域中,我添加了所有字段。用户选择多种颜色和大小,因此它将以数组格式出现,但大多数时候用户不会选择颜色选项或大小选项,此时字段值为空,因此我的过滤器不会从数据库中获取任何结果。所以,若在搜索过程中值为空,我想删除颜色或大小字段。我已经尝试了下面的代码,但它不工作。我如何做到这一点 var catId = new Array();

我正在使用mongodb和node.js。在我的数据库中,我有6个字段

投标 彩色阵列 大小数组 猫咪 子目录id 一切正常。现在我想在代码中添加过滤器。在过滤区域中,我添加了所有字段。用户选择多种颜色和大小,因此它将以数组格式出现,但大多数时候用户不会选择颜色选项或大小选项,此时字段值为空,因此我的过滤器不会从数据库中获取任何结果。所以,若在搜索过程中值为空,我想删除颜色或大小字段。我已经尝试了下面的代码,但它不工作。我如何做到这一点

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中输入这个请求会发生什么?若我直接在数据库中输入它的值