ho una collezione che assomiglia a questo:MongoDB: Eseguire una query Periodo dal ObjectId nella shell mongo
{
_id: ObjectId("50a68673476427844b000001"),
other fields
}
voglio fare una query gamma per trovare i record tra due date. So che posso ottenere la data dal ObjectId nella shell mongo var fare questo:
var aDate = ObjectId().getTimestamp()
ma non c'è un modo (per quanto posso capire, al momento) per creare un composto ObjectId del solo la porzione timestamp - penso che la mia soluzione ideale è non funzionante codice shell mongo sarebbe:
var minDate = ObjectId(new Date("2012-11-10"));
var maxDate = ObjectId(new Date("2012-11-17"));
Utilizzare il ritrovamento con la MinDate e MaxDate come i valori di intervallo.
C'è un modo per farlo in SHELL - Non sono interessato ad alcuni dei prodotti del driver.
I primi 8 byte di mongoid sono timestamp in esadecimali, quindi è possibile creare un ObjectId valido con i primi 8 byte creati dalla data e riposare solo zero e quindi fare query simili a questo: '{ \t _id: {$ gt: ObjectId (" 5087e5b106cffca815000000 ")} }' –
C'è una buona risposta per [Posso interrogare MongoDB ObjectId per data?] (http: // stackoverflow. it/questions/8749971/can-i-query-mongodb-objectid-by-date) che include una funzione JavaScript 'objectIdWithTimestamp()'. Puoi salvare questa funzione nel tuo [.mongorc.js] (http://www.mongodb.org/display/DOCS/Overview+-+The+MongoDB+Interactive+Shell#Overview-TheMongoDBInteractiveShell-.mongorc.js) per avere disponibile nella shell 'mongo' all'avvio. – Stennie