2013-04-13 2 views
2

mongodb java 드라이버를 사용하여 maven 저장소 (아래 pom.xml과 같습니다)를 사용하여 날짜 범위와 집계 프레임 워크 사이의 트랜잭션을 쿼리합니다.

db.transactions.aggregate(
{ "$match" : 
    { 
     "created_at" : { "$gt" : { "$date" : "2001-04-12T12:00:00.000Z"} , "$lte" : { "$date" : "2020-04-13T12:00:00.000Z"}} 
    } 
} 
) 

그때는 것 같다 $ 날짜 블록을 제거하고 ISOdate 기능과 날짜를 문자열로 교체하는 경우 : 자바 드라이버는 내가 몽고 콘솔에서 유효성을 검사하는 시도하고 작동하지 않는 것으로 확인 다음 $ 일치를 생성 일. 나는 자바에서 작동하지 않는 이유를 이해하는 데 실패 ($ 일치 JSON을 - 나는 몽고 콘솔에서 시도하고 그것이 잘 작동하지 않는 일식에서 가져온했다.) $ 날짜가 왜

pom.xml 
<dependency> 
    <groupId>org.mongodb</groupId> 
    <artifactId>mongo-java-driver</artifactId> 
    <version>2.11.0</version> 
</dependency> 

가 하나라도 알고 있나요 MongoDB v2.4.0을 사용하는 집합체로 작업하지 않습니까?

+0

같이되어서 너무 우리는 데이터베이스의 데이터 저장소에 대한 정보를 제공합니다. 왜냐하면'date'는 문서의'created_at'에 내장 된 임베디드라고 가정했기 때문입니다. –

+0

시도했지만 작동하지 않습니다. 내가 제공 한 코드는 MongoDB java 드라이버에 의해 생성되었으므로 ""문제는 아닙니다. created_at는 날짜 필드이며 ISO 날짜 형식을 유지합니다. : 참고로 아래 JSON을 찾아주세요 { "created_at"ISODate ("2013-04-18T10 : 42 : 22Z"), "payment_token을": "f7e595ec-1cdd-4e5d-93c5-eca8e5f9f876" } – Jaymin

+0

제공 한 JSON을 참조하여 내 대답을 업데이트했습니다. 시도해보고 알려주십시오. 동일한 코드가 MongoDB 2.2.3에서 나와 함께 작동하기 때문에 문제가없는 버전에서도 잘 작동하길 바랍니다. –

답변

3

나는 그것이 $match에서의 $date 필드에 "" & $ 접두사를 제거하여 해결되었다. 당신이 $date 위해 동일을 제거를 위해 , $gt & $lte

는 대답을 시도하고 그것이 작동하지 않는 경우 알려 주시기 바랍니다 .. 그것이 작동하지 않을 경우 제공하십시오

db.transactions.aggregate(
{ "$match" : 
     { 
      'created_at': { 
         $gt: "2001-04-12T12:00:00.000Z", 
         $lt: "2020-04-13T12:00:00.000Z" 
         } 
     } 
}); 
+0

CFMongoDB (ColdFusion)를 Mongo java 드라이버와 함께 사용하고 있으며이 형식이 작동했습니다. ''$ gt "'&'"$ lt "'에 따옴표를 추가해야했지만 ColdFusion 요구 사항 일 수 있습니다. (참고 : 유효한 JSON은 큰 따옴표를 필요로합니다. 자바 드라이버는 현재 신경 쓰지 않지만 미래에는 사용할 수 있습니다.) –

관련 문제