12

を使用して簡単なMongoDBクエリを作成する必要がありますが、実行javaできません。

mongo クエリは次のようになります。

db.yourCollection.find({"$where" : "this.startDate < this.endDate"})

QueryBuilderクラスを使用して上記のクエリを作成する必要があります。MongoDB javaしかし、ドライバーではできません。

BasicDBObject document = new BasicDBObject();
document.put("id", 1001);
document.put("intValue", 1200);
document.put("updateValue", 2100);

DBObject query = QueryBuilder.start("intValue").lessThan("updateValue").get();
DBCursor cursor = collection.find(query);
while (cursor.hasNext()) {
System.out.println("Result : -"+cursor.next());}

上記のコードは結果を返しません。しかし、それに変更するupdateValue2100、結果が得られます。ここでの私の質問はlessThan、オブジェクトを入力パラメーターとして受け取ることです。では、ドキュメント フィールドを入力パラメータとして渡すにはどうすればよいでしょうか。

4

2 に答える 2

14

理想的には、mongoDB クエリは次のようにする必要があります。

db.yourCollection.find({"startDate": {$lt: endDate}})

次のようにJavaで書くことができます: -

BasicDBObject query = new BasicDBObject("startDate", new BasicDBObject("$lt", endDate);
DBCursor cursor = coll.find(query);

公式チュートリアルを見ることができます


QueryBuilderを使用する場合は、次のように実行できます。

DBObject query = QueryBuilder.start("startDate").lessThan("endDate").get();
DBCursor cursor = coll.find(query);
于 2013-01-14T07:43:17.443 に答える
5

QueryBuilderは、mongodbのコレクションからデータを取得するための複雑なクエリを構築するのに役立ちます。このようにQueryBuilderを使用できます。

BasicDBObject document = new BasicDBObject();
QueryBuilder qb = new QueryBuilder();
qb.or(new QueryBuilder().put("starting_date").is(null).put("ending_date").is(null).get(),
                new QueryBuilder().put("starting_date").lessThanEquals("ending_date").get());
document.putAll(qb.get());
DBCursor cursor = getDbCollection().find(document)
  • QueryBuilder qb = new QueryBuilder()は、新しいQueryBuilderをインスタンス化します。
  • 上記の例でQueryBuilderによって構築されたロジックは次のとおりです。(開始日=nullおよび終了日=null)または(開始日<=終了日)
  • document.putAll(qb.get())は、構築されたロジックをDBObjectに追加します。
于 2013-01-14T07:44:18.393 に答える