gpt4 book ai didi

mongodb - 多个 $and 与多个 $or in $match mongoose

转载 作者:可可西里 更新时间:2023-11-01 09:29:20 27 4
gpt4 key购买 nike

预期条件

if(pid==req.session.pid && 
((status==0 && StatusDate1>=somedate)||(status==1 && StatusDate2>=somedate)||
(status==2 && StatusDate3>=somedate)||(status==0 && StatusDate1>=somedate)))

我已经尝试在 $match 语句下面写满足上述条件,但由于某些原因它不是预期的。

var match =  { $match: { 
$and: [
{ practiceId: req.session.p_id },
{
$or:[{status : 0, StatusDate1:{$gte:somedate}}]
},
{
$or:[{status : 1, StatusDate2:{$gte:somedate}}]
},
{
$or:[{status : 2, StatusDate3:{$gte:somedate}}]
},
{
$or:[{status : 3, StatusDate4:{$gte:somedate}}]
}]
}
}

谁能给我指出正确的方向?

更新

尝试了以下版本,仍然没有达到我的预期。

尝试 1

var match =  { $match: { 
$and: [
{ practiceId: req.session.p_id }],
$and:[
{
$or:[{status : 0, StatusDate1:{$gte:somedate}}]
},
{
$or:[{status : 1, StatusDate2:{$gte:somedate}}]
},
{
$or:[{status : 2, StatusDate3:{$gte:somedate}}]
},
{
$or:[{status : 3, StatusDate4:{$gte:somedate}}]
}]
}
}

尝试 2

var match =  { $match: { 
practiceId: req.session.p_id ,
$and:[
{
$or:[{status : 0, StatusDate1:{$gte:somedate}}]
},
{
$or:[{status : 1, StatusDate2:{$gte:somedate}}]
},
{
$or:[{status : 2, StatusDate3:{$gte:somedate}}]
},
{
$or:[{status : 3, StatusDate4:{$gte:somedate}}]
}]
}
}

尝试 3

var match =  { $match: { 
practiceId: req.session.p_id,
$and:[
{
$or:[{status : 0,StatusDate1:{$gte:somedate}}],
$or:[{status : 1,StatusDate2:{$gte:somedate}}],
$or:[{status : 2,StatusDate3:{$gte:somedate}}],
$or:[{status : 3,StatusDate4:{$gte:somedate}}]
}
]
}

最佳答案

Syntax :- { $or: [ expression1, expression2, ... ] }

看看这是否对你有帮助:-

var match =  { $match: { 
$and: [
{ practiceId: req.session.p_id },
{
$or:[{status : 0, StatusDate1:{$gte:somedate}},
{status : 1, StatusDate2:{$gte:somedate}},
{status : 2, StatusDate3:{$gte:somedate}},
{status : 3, StatusDate4:{$gte:somedate}}]
}]
}
}

$or 中添加了 , 分隔条件。参见 $or

关于mongodb - 多个 $and 与多个 $or in $match mongoose,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37722795/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com