2013-02-07 14 views
16

aşağıdaki mongoexport çağrısı kullanarak MongoDB belirli bir gün için yapılan siparişleri almaya çalışıyorum:Mongoexport

mongoexport --db store --collection user_data --query "{'order.created_order':{$gt:ISODate("2013-02-05T00:00:00.000Z"),$lt:ISODate("2013-02-06T00:00:00.000Z")}, 'order.status':'paid'}" --out ordersfeb6.json

ama şu anda yaşıyorum aşağıdaki hata:

Thu Feb 7 18:33:43 Assertion: 10340:Failure parsing JSON string near: 'order.cre 
0x56a223 0x5712e5 0x53e0f7 0x53e21e 0x8b7739 0x524f2b 0x5258a3 0x7fa7b77bd76d 0x525975 
mongoexport(_ZN5mongo15printStackTraceERSo+0x23) [0x56a223] 
mongoexport(_ZN5mongo11msgassertedEiPKc+0xc5) [0x5712e5] 
mongoexport(_ZN5mongo8fromjsonEPKcPi+0x377) [0x53e0f7] 
mongoexport(_ZN5mongo8fromjsonERKSs+0xe) [0x53e21e] 
mongoexport(_ZN6Export3runEv+0x489) [0x8b7739] 
mongoexport(_ZN5mongo4Tool4mainEiPPc+0x72b) [0x524f2b] 
mongoexport(main+0x23) [0x5258a3] 
/lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xed) [0x7fa7b77bd76d] 
mongoexport() [0x525975] 
assertion: 10340 Failure parsing JSON string near: 'order.cre 

bu soruya mongoexport JSON parsing error itibaren ben javascript Mongo sorguları bazı bölümlerini değerlendirmek için kullanıldığını biliyoruz. Merak ediyordum: $ gt ve $ lt operatörleri javascript gerektiriyor ve bu benim problemim mi? Değilse, sorgumda neyin yanlış olduğundan emin değilim ve herhangi bir öneri çok takdir edilecektir. Okuduğunuz için teşekkürler!

cevap

51

burada sorun, tarih temsil nasıl, bunlar Date türleri olarak ve çağ formatında geçirilen gerekir olduğunu. Bunun yerine bu deneyin: Sonra

> new Date(2013,01,16)*1 
1360990800000 

doğrulamak için:

> new Date(1360990800000) 
ISODate("2013-02-16T05:00:00Z") 

Eğer devrine ISODate dönüştürmek isteyen varsa
mongoexport --db store --collection user_data --query '{"order.created_order":{$gt:new Date(1360040400000),$lt:new Date(1360990800000)}, "order.status" : "paid"}' --out ordersfeb6.json 

, sadece, kabukta böyle bir şey tarihini diyoruz Güncelleştirmesi:imcaptor tarafından yapılan yorumlarda belirtildiği üzere, Ay Date yapısında sıfırdır (0 = Ocak, 11 = Aralık) ctor, çoğu şey beklemeyecek ve unutması kolay değil. Yukarıdaki örnekte 01'i geçmiş ve ISODate'te doğrulamadan görebileceğiniz gibi bir Şubat tarihi aldım.

+0

Yardımlarınız için çok teşekkür ederim! Bu çok kullanışlıdır. – Leah

+1

@Adam. Cevap için teşekkürler. Sorunun unvanını, $ lt $ gt operatörlerinin aksine, tarihleri ​​ele alan (cevabınız netleştikçe) bir soruya dönüştürmek uygun olur mu? Bu durumda cevabınızı daha hızlı bulurdum. –

+0

Bir düzeltmeyi önermek için iyi bir fikir olabilir, daha fazla arama yapılacağını düşünüyorsanız, belki de bu soruda –