具有多个$ and和$ or条件的猫鼬查询

时间:2020-03-21 08:18:16

标签: node.js mongoose

我正在尝试对Mongoose进行查询,该查询在单个模式上需要多个条件,但是看来我无法正确创建它。

模式如下(简化):

const Event = new Schema ({
   owner: Number,
   contribs: [ Number ],
   status: String,   // can be "open" or "closed"
   end_date: Date
})

给出一个数字'user_id',我需要搜索所有可立即解决所有这些情况的事件:

  • 所有者是user_id或贡献包含user_id
  • 状态未“关闭”或状态“已关闭”且end_date> two_days_ago

“ two_days_ago”是创建查询之前计算的日期。

我正在尝试使用此过滤器,但无法正常工作:

let filter: any = {    
    $or: [
        { owner: user_id },
        { contribs: user_id }
    ],
    $and: [
        {
            $or: [
                { status: { $ne: "closed" } },
                {
                    $and:
                        [
                            { status: "closed" },
                            { updated: { $gte: two_days_ago } }
                        ]
                }
            ]
        }
    ]
};    

也许有些愚蠢,但我无法解决。请帮忙:-)

0 个答案:

没有答案