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