問題タブ [mongo-java-driver]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
538 参照

java - MongoDB は、集計パイプラインでドキュメント フィールドを比較します

次のようなドキュメントのコレクションがあります。

フィールド $bornIn がフィールド $city.name と等しいすべてのドキュメントを取得したいと考えています。これはパイプラインの中間段階として行う必要があるため、$where 演算子を使用できません。

オンラインで検索したところ、次のような実装の提案が見つかりました。

ただし、フィールドが異なるものとしてマークされるため、シェル経由でも Java ドライバー経由でも機能しませんでした。完全を期すために、コードを報告します。

何か提案はありますか?私は MongoDB 3.2 を使用していますが、Java ドライバーを介してこれを行う必要があります。

ありがとう!!

PS。関係ありませんが、実際には上記のドキュメントは、コレクション「都市」と「人物」の間の $lookup ステージの出力であり、$name/$mayor で結合されています.. とてもクールです!! :D:D

0 投票する
1 に答える
3861 参照

java - MongoCursor には count() メソッドがありませんか?

だから私のコードは次のとおりです。

ここで、とtotal countの前のドキュメントの を知りたいと思います。skiplimit

まったく同じ質問に対する回答がありますが、私が持っているものmongo-java-driver v3.1.0と使用する API が異なります。FindIterableクラスとcount()MongoCursorクラスsize()の両方にメソッドはありませ。ありがとう!

アップデート

collection.count@Philippが言ったように、唯一の回避策はmongodbへの別の呼び出しを行うことのようです

0 投票する
1 に答える
1353 参照

mongodb - Javaプログラムからmongoクエリを実行するには?

mongo-shell から実行するクエリです。同じクエリを Java プログラムから実行したいと考えています。どうやってやるの?

0 投票する
2 に答える
634 参照

mongodb - java apiを使用するmongodbバージョン3では、クエリ中にヒントを与えるにはどうすればよいですか

java api を使用する mongodb バージョン 3 では、クエリ中にヒントを与える方法 クエリ結果は、MongoCursor を持つ FindIterable です。 特定のインデックスを使用するためのヒントをどのように与えるべきですか?

古いバージョンでは、ヒント用の API を持つ DBCursor があります。

0 投票する
0 に答える
546 参照

java - MongoDB Java ドライバー 3.0 でオプションのパーツを使用してクエリを作成する方法

オプションのクエリパーツを使用して db クエリを作成するメソッドを作成したいと考えています。

昔は次のようなメソッドを書くことができました:

新しいMongoDB Java driver 3.0でそれを達成する方法

私は何かを試しました

Documentしかし、すべてのフィルター メソッドは、流暢に変換できなかった BSON を返します。フィルターはそのように使用できなかったようです...かなり役に立ちません。

私は何かが恋しいですか。それを賢く行う方法は?

0 投票する
1 に答える
980 参照

mongodb - com.mongodb.BasicDBList を Scala で役立つものに変換する方法は?

これまでのところ、mongo-hadoop-core 1.4.2 を使用して MongoDB からデータを取得できています。操作したいデータは、クエリしているコレクション内の各ドキュメント内の埋め込みドキュメント内の配列内の値であり、これらの値はDouble. コレクションから取得したデータの型は RDD[(Object, org.bson.BSONObject)] です。これは、各ドキュメントが型 (Object, org.bson.BSONObject) のタプルであることを意味します。

埋め込みドキュメントを取得したいときはいつでも(spark-shell 1.5.1で作業しています):

タイプ Object を BasicDBObject に変換するのは非常に不便ですが、使用するにはそれを行う必要がありますget(key: String).asInstanceOf[BasicDBObject]代わりに使用することもできます match {case x: BasicDBObject => x}が、より良い方法はありますか??. DoubleIntStringなどの特定の型を取得することは、クラスDateから継承されたメソッドを使用して簡単に行うことができます。BasicBsonObject

に関してはBasicDBList、から継承されたget(key: String)メソッドがあり、キャストできるが呼び出しのみを使用して返すBasicBsonListメソッドがあり、キャストできないの配列を返すから継承されたメソッドがあります。ここ:ObjectDouble.asInstanceOf[Double]toArray()java.util.ArrayListObjectDouble.map(_.asInstanceOf[Double])

しかし、時にはそれが機能します。一部のドキュメントではこのキャストが機能しますが、他のドキュメントでは機能せず、上記のエラー メッセージが出力されます。これは、MongoDB が Spark に提供するデータ構造の問題でしょうか?これらのドキュメントだけでしょうか? 30 個の値を持つ小さな配列は、常に機能するようです。

これまでの私の解決策は、この非効率的な変換です:

ここで何かが足りないのですか、それとも本当に不便ですか? Objectこれらすべてのメソッドがorを返さなければならないのはなぜBSONObjectですか? 私が見つけたこの問題を克服する方法はありますか?java.lang.Integerdouble にキャストされる配列に整数がない場合、これはどこから来たのでしょうか?

0 投票する
1 に答える
3491 参照

mongodb-java - MongoIterable.forEach と Iterable.forEach の比較

MongoIterable.forEachBlockJava 8 と非常によく似た が必要Consumerです。これらは問題を引き起こすほど似ています。たとえば、次のコードはコンパイルされません。

コンパイラは と の間Iterable.forEach( Consumer ) で決定できないためMongoIterable.forEach( Block )です。これを修正するには、パラメーターを明示的に入力するなどの回避策が必要です。

または代わりにMongoIterable、プレーンとして扱いますStream:

のようなインターフェイスMongoIterable.forEachを使用して定義されていないのはなぜですか? さらに良いことに、なぜ入っているのですか?ConsumerMongoIterable.forEach(Consumer<? super TResult> consumer)forEachMongoIterable