我在Mongo集合中有以下对象:
{
"active" : true,
"startDate": Date( 1434355148265 ), // Mon Jun 15 2015 15:59:08 GMT+0800 (HKT)
"endDate": null,
"lastFeedSearch": null,
"lastTopicSearch": null
}
Run Code Online (Sandbox Code Playgroud)
然后我尝试运行以下查询,但它似乎没有返回任何对象
{
"active":true,
"$and":[
{
"$or":[
{
"startDate":{
"$exists": false
}
},
{
"startDate":{
"$lte": "2015-06-16T07:07:30+00:00"
}
}
]
},
{
"$or":[
{
"endDate":{
"$exists": false
}
},
{
"endDate":{
"$gte": "2015-06-16T07:07:30+00:00"
}
}
]
},
{
"$or":[
{
"$or":[
{
"lastTopicSearch":{
"$lte": "2015-06-16T06:07:30+00:00"
}
},
{
"lastTopicSearch":{
"$exists": false
}
}
]
},
{
"$or":[
{
"lastFeedSearch":{
"$lte": "2015-06-16T06:52:30+00:00"
}
},
{
"lastFeedSearch":{
"$exists": false
}
}
]
}
]
}
]
}
Run Code Online (Sandbox Code Playgroud)
据我所知,所有这些$or条件至少应该匹配.据我所知,这是因为虽然文档说应该考虑$exists到null价值,但似乎没有考虑到价值.
当<boolean>为true时,$ exists匹配包含该字段的文档,包括字段值为null的文档.如果<boolean>为false,则查询仅返回不包含该字段的文档.
换句话说,$exists将nulls 计为有效值.因此,{"$exists": false}只匹配相应字段所在的文档undefined,而不是null.
请尝试匹配您的字段null:
{
"lastTopicSearch": null
}
Run Code Online (Sandbox Code Playgroud)
此查询将匹配两者null和undefined值.
| 归档时间: |
|
| 查看次数: |
2674 次 |
| 最近记录: |