预期条件
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}}]
}
]
}
}
“$ or”表达式中的“somedate”是否相同? – styvane
@ user3100115是的..它是相同的...... –