基于mongodb中Object内部数组的过滤器

时间:2020-05-08 13:02:07

标签: javascript mongodb mongoose

嗨,我正在用猫鼬创建一个对象,该对象的字段类型为object。该对象还有两个字段start_date和end_date。现在,我得到一个查询,该查询应过滤掉与start_date到end_date期间中的任何一个都不符合的记录。即(query_end_date <开始日期或query_start_date>结束日期)

type : [{
            userId : {
                type : mongoose.Schema.ObjectId,
                required : true
            },
            startDate : {
                type : Date,
                required : true
            },
            endDate : {
                type : Date,
                required : true
            }   
        }]

1 个答案:

答案 0 :(得分:1)

您可以使用$gt$lt运算符以及用于查询嵌套文档数组的语法进行查询:

async function Query(query_start_date, query_end_date){
  try{
    let users = await Model.find({ $or: [{ "field.startDate" : { $gt : query_end_date}} ,
                                   {"field.endDate" : { $lt : query_start_date}} });
    console.log(users);
  } catch(err){
    console.log("Error ", err);
  }

Reference