質問
くらいなので組み込み文書にアクセスグループの会員.各埋め込み文書のIDを指グループの他のコレクションの開始日付で、 オプション 期限日です。
たいへのクエリーのために現在は、グループ"現在"のスタート時間は以下の流動時間の期限が切時間以上の現在時刻またはnullになります。
この条件付きのクエリは完全に阻止めます。しかできなかったんで走行する二つの問い合わせや融合の結果が醜く必要を増やす目標を揚げており、すべての結果です。やがデフォルトの期限が切時間の任意の日の遠い未来がもuglier、潜在的に脆さが発生してしまう。アプリケーションでだしているから"(終了>=Now())又は(限がNULLの場合)"がわからないかなるもんごういか.
そのアイデア?深く感謝する。
解決
は、誰もが将来的にこのページを越えつまずくに-場合、私は更新しようと思いました。 ます。http:1.5.3のとおり、モンゴは今本当の$またはオペレータサポートしています://www.mongodb.org/display/DOCS/Advanced+Queries#AdvancedQueries-%24orする
あなたのクエリ "(有効期限が切れる> = NOW())OR(IS NULLを満了する)は、" 今のようにレンダリングすることができます
{$or: [{expires: {$gte: new Date()}}, {expires: null}]}
他のヒント
の場合には、誰もがそれを有用見つけた、 www.querymongo.com を含むOR句、SQLとMongoDBの間の変換を行います。それはあなたがSQL同等物を知っているときの構文を考え出すために本当に役立つことができます。
ORステートメントの場合、それはこのようになります。
SQLます:
SELECT * FROM collection WHERE columnA = 3 OR columnB = 'string';
のMongoDBます:
db.collection.find({
"$or": [{
"columnA": 3
}, {
"columnB": "string"
}]
});
クエリは一緒にデフォルトAND式でモンゴ内のオブジェクト。 Mongoの現在しかし、このようなクエリを表現する方法があり、そのようなクエリのOR演算子が含まれていない。に
を使用する "の" か "" ます。
そのつもりは次のようになります:
db.mycollection.find( { $where : function() {
return ( this.startTime < Now() && this.expireTime > Now() || this.expireTime == null ); } } );
db.Lead.find(
{"name": {'$regex' : '.*' + "Ravi" + '.*'}},
{
"$or": [{
'added_by':"arunkrishna@aarux.com"
}, {
'added_by':"aruna@aarux.com"
}]
}
)
を使用 $where
クエリにはログインが必要で、一部で使用できません。このような問題だと思いるこの店は、高い値の"満了日"欄のままの自然にも以上の現在().お店の非常に高い日百年後にもご利用いた分離型を示すのにいい。クロス-タイプの並び順で定義され こちらの.
空RegexはMaxKeyの場合は言語に対応していますので)には困らない立地になっています。