Wiem, że ObjectIds zawierają datę ich utworzenia. Czy istnieje sposób na sprawdzenie tego aspektu ObjectId?
javascript
mongodb
Zach
źródło
źródło
Odpowiedzi:
Umieszczanie znaczników czasu w ObjectId obejmuje zapytania oparte na datach osadzonych w ObjectId z dużą szczegółowością.
Krótko w kodzie JavaScript:
źródło
~/.mongorc.js
pliku, aby była dostępna podczasmongo
uruchamiania powłoki.ObjectId(hexSeconds + "0000000000000000");
nadb.ObjectID.createFromHexString(hexSeconds + "0000000000000000");
ObjectId()
:require('mongoose').Types.ObjectId()
- gdzierequire('mongoose')
jest zainicjowana / skonfigurowana instancja Mongoose.Użycie wbudowanej funkcji dostarczanej przez sterowniki mongodb w Node.js umożliwia wykonywanie zapytań według dowolnego znacznika czasu:
Alternatywnie, aby wyszukać rekordy przed bieżącą godziną, możesz po prostu wykonać:
Źródło: http://mongodb.github.io/node-mongodb-native/api-bson-generated/objectid.html
źródło
W programie
pymongo
można to zrobić w następujący sposób:źródło
pymongo
zależności:epoch_time_hex = format(int(time.time()), 'x')
(nie zapomnij dodać zer w zapytaniu) Użyto pakietu czasu (import time
).Ponieważ pierwsze 4 bajty ObjectId reprezentują sygnaturę czasową , aby sprawdzić chronologicznie swoją kolekcję, po prostu uporządkuj według identyfikatora:
Po otrzymaniu dokumentów możesz uzyskać czas wygenerowania ObjectId w następujący sposób:
źródło
jak znaleźć polecenie Znajdź polecenie (od tej daty [2015-1-12] do tej daty [2015-1-15]):
Policz polecenie (od tej daty [2015-1-12] do tej daty [2015-1-15]):
Usuń polecenie (od tej daty [2015-1-12] do tej daty [2015-1-15]):
źródło
Możesz użyć
$convert
funkcji do wyodrębnienia daty z ObjectId począwszy od wersji 4.0.Coś jak
Możesz sprawdzić datę, porównując czas rozpoczęcia i zakończenia dla daty.
LUB
Możesz użyć skrótu,
$toDate
aby osiągnąć to samo.źródło
Aby pobrać dokumenty sprzed 60 dni w kolekcji mongo, użyłem poniższego zapytania w powłoce.
źródło
Jeśli chcesz wykonać zapytanie o zakres, możesz to zrobić tak, jak w tym poście . Na przykład zapytanie o konkretny dzień (np. 4 kwietnia 2015):
źródło
Z dokumentacji:
w ten sposób masz datę, która jest ISODate.
Spójrz na http://www.mongodb.org/display/DOCS/Optimizing+Object+IDs#OptimizingObjectIDs-Extractinsertiontimesfromidratherthanhavingaseparatetimestampfield . po więcej informacji
źródło
Korzystając z MongoObjectID powinieneś również znaleźć wyniki podane poniżej
źródło
W szynach
mongoid
możesz zapytać za pomocąźródło