0
试图找出是否可以使用mongoose和nodejs进行此查询。查询日期还是不存在?
Product.find({
price: { $gt: 2, $lt: 3},
date: { $gt: new Date() || $exists: false}
}). exec(callback);
有谁知道是否有可能来检查日期不存在发回或日期是大于今天?
感谢
试图找出是否可以使用mongoose和nodejs进行此查询。查询日期还是不存在?
Product.find({
price: { $gt: 2, $lt: 3},
date: { $gt: new Date() || $exists: false}
}). exec(callback);
有谁知道是否有可能来检查日期不存在发回或日期是大于今天?
感谢
使用$or
:
Product.find({
"price": { "$gt": 2, "$lt": 3 },
"$or": [
{ "date": { "$gt": new Date() } },
{ "date": { "$exists": false } }
]
}). exec(callback);
所有参数一般都是含蓄蕴借的,所以就像是你说除了“价格比2且小于3时” “并且日期大于此日期或日期不存在”。
只是为了阐明在词组
逻辑用“这样的多个领域,THEN你实际使用的$and
Product.find({
"$and": [
{ "price": { "$gt": 2, "$lt": 3 } },
{ "$or": [
{ "date1": { "$gt": new Date() } },
{ "date1": { "$exists": false } }
]},
{ "$or": [
{ "date2": { "$gt": new Date() } },
{ "date2": { "$exists": false } }
]}
]
}). exec(callback);
我可以做多$ ORS如果我有DATE1和date2并希望对两者进行同样的检查?“$或”:[ {“date”:{“$ gt”:new Date()}}, {“date”:{“$ exists”:false}} “$或”:[ {“date2”:{“$ gt”:new Date()}}, {“ ” date2“:{”$ exists“:false}} ] – Lion789
@ Lion789是的。这是你真正使用和明确的'$和'运算符的情况之一。与$或'相同的基本原因是参数在数组中。不像你这样做,但像我这样做。查看答案内容。 –
谢谢,我想知道这是否允许,不断得到一个错误:{_id:{$ nin:[userObj.ids]} ....该数组是空的,但它给了我一个CastError:对于模型“Product” – Lion789