2016-04-07 6 views
0

私には問題があります。私はそれが動作すると確信しているクエリがありますが、私はJavaでそれを翻訳したときに何も返されません。MongoDB Java - mongodb Javaドライバへのクエリの翻訳

MongoDBのクエリは次のとおりです。

db.births.aggregate([ 
    { 
     "$match": { 
      "day" : "March_13", 
      "events.year": "1929", 
      "events.info": /American/ 
     } 
    }, 
    { "$unwind": "$events" }, 
    { 
     "$match": { 
      "day" : "March_13", 
      "events.year": "1929", 
      "events.info": /American/ 
     } 
    }, 
    { 
     "$group": { 
      "_id": "$_id", 
      "day": { "$first": "$day" }, 
      "events": { "$push": "$events" } 
     } 
    } 

]) 

Javaコードは次のとおりです。

AggregateIterable<Document> result = mongoDatabase.getCollection(category). 
    aggregate(
      Arrays.asList(
        new Document("$match", 
          new Document("day", day). 
            append("events.year", year). 
            append("events.info", "/" + word + "/")), 
        new Document("$unwind", "$events"), 
        new Document("$match", 
          new Document("day", day). 
            append("events.year", year). 
            append("events.info", "/" + word + "/")), 
        new Document("$group", 
          new Document("_id", "$_id"). 
            append("day", new Document("$first", "$day")). 
            append("events", new Document("$push", "$events"))))); 

顔をしていると私は、Javaにそれを翻訳方法が間違っているか、何か他のものがある場合教えてください。

ありがとうございました!

+0

"カテゴリ" Java var iableはMongoDBコレクションの "births"を指していますか? – zeugor

+0

@zeugorカテゴリは、出産/死亡/出来事/休暇を指し示すことができます。 –

+1

私はMongoDBの構文に慣れていませんが、二重引用符を付けずに/ American /の代わりに "/ American /"(文字列型)のようなものを作成していませんか? /アメリカン/ MongoDBのクエリではどのようなタイプですか? Javaには同等のものがありますか?もう一度申し訳ありませんが、それは意味をなさない、私はMongoDBで、ちょうど示唆/質問を経験はありません。 –

答えて

0

Javaではこれを試すことができます。

String m = "American"; 
DBObject eventInfoObject = new BasicDBObject(
    "events.info", 
    java.util.regex.Pattern.compile(m) 
); 

これはあなたのコードでのMongoDBサーバーにクエリー{ "events.info" : { "$regex" : "American"}}

を送信置き換える:

"/" + word + "/" 

で:

java.util.regex.Pattern.compile(word) 
関連する問題