2017-01-31 13 views
1

私が作成している新しいアプリケーションにはMongoDBを使用していますが、そこから特定のデータだけが必要です。 current(boolean)、position、sector、およびnameの各フィールドが必要です。ポジションフィールドには、「現金、SPVR、OFFおよびトレーニング」の4つの値の1つが入力され、セクターフィールドには2つの値の1つ、「ブレークまたはワーキング」があります。 1. current = TRUE 2. Position = "SPVR"または "CASH" OR Sector = "BREAK"および 3.名前がNULLではありません。AND and OR条件付きのMongoidクエリ

名前がNULLではありません。

問題は、BREAKの値を持つ数百ものレコードがありますが、ほとんどのレコードは名前フィールドに値がありません。私はそれらに関連した名前を持たないレコードは望んでいません。その点で、上記の2行目で、私はORがANDであると推測していますか?

これはMongoid声明

get '/currentstate*' do 
    StateTransaction.where(current: true, :position.in =>["SPVR", "CASH"]).to_json 

    end 

でミュー現在の開始である任意の助けいただければ幸いです。

ありがとうございます!

+0

動作するはずです。それが可能であることを私が読んだことは何もありません。私はOR部分にany_ofを使うことができますが、それはANDを除外します。私は別のルートを試みます。 – user2843365

答えて

2

それは私が、これは1つのクエリ文の中で行うことができないと思うし始めている

StateTransaction.where(current: true, :name.ne => ["",nil]).and(
    StateTransaction.or(
    {:position.in =>["SPVR", "CASH"]}, 
    {sector: "BREAK"} 
).selector 
) 
+0

助けてくれてありがとうが、残念なことに、それはうまくいきませんでした。クエリは依然としてポジションがSPVRまたはキャッシュで、セクタがBREAKであるレコードを探しているようです。私がセクターを「BREAK」に変更した場合、電子メール:「[email protected]」などの別のフィールドに、両方の条件が真である(position = SPVRとemail = [email protected])すべてのレコードが見つかりますどちらか一方の – user2843365

+0

@ user2843365私は答えを更新しました –

+0

素晴らしい作品!どうもありがとうございます!! – user2843365