猫鼬发现或条件未按预期工作

Posted

技术标签:

【中文标题】猫鼬发现或条件未按预期工作【英文标题】:Mongoose find with or condition not working as expected 【发布时间】:2017-10-17 03:51:58 【问题描述】:

我想查找该字符串是否存在于架构中 food 内的 shop_namename 中。

这里是查询

dbModel.stores.find( "food.name":  '$regex': re  ).or([ 'shop_name':  '$regex': re  ]).exec(function(err, docs) 
        if (!err) 
            res.status(200).json(
                "success": "1",
                "message": docs
            );
         else 
            res.status(200).json(
                "success": "0",
                "message": "No result found"
            );
        
    );

这是我的架构

var storeSchema = 
    "area": String,
    "food": [
        'name': String,
        'description': String
    ],
    "shop_name": String
;

我想显示与shop_namefood.name 中的字符串匹配的记录

只有当字符串包含在两个元素中时,上面才会给我记录。我如何使用or 进行检查,即如果 shop_name 或 food.name 匹配,那么它应该显示它

【问题讨论】:

【参考方案1】:

我认为您需要将条件放在 $or 数组中。

因为food 是一个对象数组,所以您可能需要在第一个条件中使用$elemMatch。

我以前从未这样做过,但它看起来像:

dbModel.stores.find( 
    $or: [
         
           food:  
               $elemMatch:  name:  $regex: re 
           
        , 
         
           shop_name:  $regex: re 
        
    ] 
).exec(...)

Another reference

【讨论】:

以上是关于猫鼬发现或条件未按预期工作的主要内容,如果未能解决你的问题,请参考以下文章

QML 条件绑定未按预期工作

std::find 条件语句未按预期工作

Specflow 场景大纲未按预期工作

Jquery UI Datepicker 日历未按预期工作

相同“if”条件下的两个“==”等式运算符未按预期工作

VUE3 复合过滤器未按预期工作