2013-04-13 7 views
2

Я использую magonodb java driver thru maven репозиторий (как показано ниже в pom.xml) для запроса транзакций между диапазоном дат с агрегатной фреймворком. Драйвер Java генерирует следующий $ спичку, что я пытался проверить на Монго консоли и обнаружил, что она не работает:

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

Если удалить $ дату блок и заменить его ISODate функции и строки даты, то она, как представляется, за работой. Я не понял, почему он не работает в Java ($ матч 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

Я пробовал, но он не работает. Код, который я предоставил, был создан Java-драйвером MongoDB, поэтому я не вижу «проблема». 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

я получил это решается удалением префикса "" & $ на $date поле в $match. Для удаления такой же для $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 требует двойных кавычек. Возможно, java-драйвер в настоящее время не заботится, но может быть и в будущем.) –