import java.util.Date;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.mongodb.core.MongoOperations;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
public class CustomQuery {
@Autowired private MongoOperations mongoOperations;
public void customQuery(Date submittalDate) {
List<Question> q1s = mongoOperations.find(
new Query(Criteria.where("category").is("New")),
Question.class);
List<Question> q2s = mongoOperations.find(
new Query(
Criteria.where("submittalDate").gt(submittalDate).and("category").is("New")
),
Question.class);
}
}
The top Spring MongoDB Java query returns the expected results in q1s.
The bottom query should return a subset of the top query. Instead, entries that match ("submittalDate"). Gt (submittalDate), are in q2s results, regardless of whether or not they are in the "New" category.
i.e. this is like ("category"). ("New") from the second request is ignored.
Using Mongodb v2.0.6 32-bit with Spring Data p>
Help evaluate.
09/09/2012 update
Still not working
Update 08/26/2012
This returns the results on the Mongo command line:
db.foo.find( { "submittalDate":{ "$gte": ISODate("2012-07-31T23:00:00.000Z") }, "category" : "New" } )
, Java ( ) . , , DEBUG Java, :
[DEBUG] [http-8080-1] (MongoTemplate.java:doFind:1256) find using query:
{ "submittalDate" : { "$gte" : { "$date" : "2012-07-31T23:00:00.000Z"}} , "category" : "New"}
, , Mongo ISODate (..).
Java MongoDB java.util.Date - ISODate (..) ? .