首页 > 解决方案 > 如何使用过滤器替换聚合中的 elemMatch

问题描述

我在猫鼬中有一个查找查询,但是出于需要我现在想使用聚合,搜索后我发现 elemMatch 不适用于聚合,我必须使用过滤器,有没有解决方案可以用过滤器替换我的查询

我在查询中使用正则表达式:

我的查询

 mymodel.find({u_info: {$elemMatch: {ai_id: 1234, response:{ $regex: new RegExp("^myString" , "i") }}}}

模型

var InfosSchema = new mongoose.Schema({

   u_info:[
                {
                    ai_id:{type: Schema.Types.ObjectId, ref: 'wt_ai_infos'},
                    question:String,
                    response:String
                }]},

  return conn.model('wt_infos', InfosSchema);
};

我的收藏

[
  {
    "_id": ObjectId("5aca2ac25c1d8adeb4a2dab0"),
    "u_info": [
      {
        "response": "false",
        "question": "question 1",
        "ai_id": 254
      },
      {
        "response": "myString",
        "question": "question 2",
        "ai_id": 1234
      }
    ]
  }
]

标签: mongoosefilteraggregate

解决方案


推荐阅读