2017-12-14 10 views
-1

私はaまたはstatementの一部であるidのリストを持っていますが、morphiaのクエリまたは演算にはコンストラクタしかありません。誰かがこれらのIDをクエリに追加して私を助けることができますか? LISTは動的です。値は常に変更されます。Java mongo morphiaまたはquery

{( "$または":[{ "ID": "1"}、{」1,2,3は一例

のために結果の結果がであるべきですID ":2}、{" ID ":" Dについて:

Query<YourEntity> query = datastore.find(YourEntity.class);    

query.or(
    query.criteria("id").equal("1"), 
    query.criteria("id").equal("2"), 
    query.criteria("id").equal("3") 
); 

List<YourEntity> result = query.asList(); 

更新3" }])}

for (string id : ids) { 
     Criteria id = query.criteria("id").equals(id); 
     query.or(id) 
} 


for (string id : ids) { 
    Criteria id = query.criteria("id").equals(id); 
     query.or.add(id) 
} 
+0

次のようになります。 ' query.criteria( "ID")(asList( "1" に、 "2"、 "3")) ' これは「または」ではありませんが、あなたが望むものを得ることができると思います。 – evanchooly

+0

ありがとう、私は$演算子でそれを把握することができます。コメントのthnx :) – sed

答えて

0

togehterだから私はsulotionが見つかりました:(テストされていません)、次の試してくださいynamic。 Morphiaクエリがそれを許すdosntていますが、以下では、ここで見ることができるよう、私はBasicDBObjectにおけるオペレータ に$を使用:

List<String> list= new ArrayList(); 
ids.add("1"); 
ids.add("2"); 
ids.add("3) 
BasicDBObject basicObject = new BasicObject("$in", list); 
query.filter("id", basicObject); 

ので、主なポイントは、私が代わりにまたはで使用していることです。 と結果はあなたがそうのように、 `org.mongodb.morphia.query.FieldEnd#in`を使用することができます

{id:{"$in":["1","2","3"]}} 
+0

あなたは ' 〜のように: 'query.criteria(" id ")。in(asList(" 1 "、" 2 "、" 3 "))' – evanchooly

+0

option yea :) thnx – sed

0

次を行うことができ

Query<YourEntity> query = datastore.find(YourEntity.class);    

for(int i = 0; i < yourArrayOfObjects.length; i++){ 
    query.or(
    query.criteria("id").equal(yourArrayOfObjects[i].getId()), 
); 
} 

List<YourEntity> result = query.asList(); 

あなたがチェーン異なるMongoDBのクエリ操作にできるはずです

+0

答えのThnx、私はリストが動的であることを私の質問に追加したかもしれない。値は変わる可能性があります。 – sed

+0

こんにちはRieckpil、私はコードを試して、これは私が得たものです: {"$と":[{"$または":[{"_id": "1"}}}、{"$または" クエリに3回追加されました。 – sed