2017-12-20 9 views
0

mongo-spark-connector 2.2.0を使用して_idフィールドのフィルタを使用してMongoDBからデータセットを読み込もうとしています。例えばMongoDBからSparkを読み込み、objectIdインデックスフィールドでフィルタリングします

MongoSpark.loadAndInferSchema(session,ReadConfig.create(session)).filter(col("_id").getItem("oid").equalTo("590755cd7b868345d6da1f40")); 

このクエリは大きなコレクションには非常に長い時間がかかります。このクエリは、コレクションにあるデフォルトの_idインデックスを使用しないように見えます。これは、filterがobjectIdの代わりに文字列を使用するためです。インデックスを使用するにはどうしたらいいですか?

答えて

0

モンゴコネクタ述語は、私たちが提出し_idを利用することができるようにモンゴするが、それが動作しない場合、我々はたとえば下記参照、同じことを達成するためにパイプラインAPIを使用することができますプッシュする必要があり、デフォルトで

val rdd = MongoSpark.load(sc) 

val filterRdd = rdd.withPipeline(Seq(Document.parse(" { $match : { _id : "SomeValue" } }"))) 
+0

ありがとう、このソリューションは動作しますが、私はまだデータセットを使用してそれを行う方法を探しています。 – Mork

関連する問題