试着弄清楚我是否可以使用mongoose和nodejs来使这个查询工作。
Product.find({
price: { $gt: 2, $lt: 3},
date: { $gt: new Date() || $exists: false}
}). exec(callback);
是否有人知道是否可以检查日期是否不存在将其发回或者日期是否大于今天?
由于
答案 0 :(得分:1)
Product.find({
"price": { "$gt": 2, "$lt": 3 },
"$or": [
{ "date": { "$gt": new Date() } },
{ "date": { "$exists": false } }
]
}). exec(callback);
所有参数通常都是隐含的AND,所以就像"价格大于2且小于3" 你要说的另外"并且日期大于此日期或日期不存在" 。
只是用短语形式说明逻辑
使用"这样的多个字段,那么你实际使用的是$or
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);