2016-04-27 6 views
0

私は埋め込まれたサブアドレスで注文しています。私は、今日送られたサブオーダーだけを見つけるように要求しています。私がelem_matchを2つの節で使用すると、包括的に連鎖しているようです。これは、where節が排他的であるチェーン内の場合と同じように、私にとっては奇妙に思えます。 elem_match基準を排他的にする方法はありますか?Elem_matchが連鎖していない "と" mongoidリクエスト中

first_minute = Time.mktime(Time.now.year, Time.now.month, Time.now.day, 0, 0) 
last_minute = Time.mktime(Time.now.year, Time.now.month, Time.now.day, 0, 59) 

# Fails sent_at.gte but returns the order anyways 
orders = Order.where(:sub_orders.elem_match => {:sent_at.gte => first_minute, :sent_at.lte => last_minute }) 

# Fails sent_at.gte and returns what I would expect 
orders = Order.where(:sub_orders.elem_match => {:sent_at.gte => first_minute}) 

答えて

0

私は集計メソッドを使用しました。何らかの理由で、elem_matchがそうでないときにgteとlteを問い合わせることができます。

orders = Order.collection.aggregate([ 
    {"$unwind" => "$sub_orders"}, 
    {"$match" => { 
    "sub_orders.sent_at" => {"$gte" => day_ago, "$lte" => now} 
    }} 
]) 
関連する問題