Comparison Query Opere ObjectID <-> Data
-
20-12-2019 - |
Domanda
È possibile eseguire query di confronto $gt
, $lt
, ecc. Di un Date
contro un ObjectId
e viceversa?Il driver mongodb ha lanciato automaticamente questo?Questo server mongodb illustra automaticamente questo?
Soluzione
Sì e no.
È possibile sotto i metodi basati su JavaScript per ottenere una data dal valore dell'oggetto in cui è possibile utilizzare per i confronti.Dovrebbe inoltre essere possibile costruire un oggetto dato un valore specifico, ma non vedendo l'utilità di questo.Ma tutti sono validi ed essenzialmente per data:
ObjectId("53473d87cb495e216c982929") > ObjectId("53473e57cb495e216c98292a")
ObjectId("53473d87cb495e216c982929").getTimestamp() >
ObjectId("53473e57cb495e216c98292a").getTimestamp()
ObjectId("53473d87cb495e216c982929").getTimestamp() >
ISODate("2014-04-11T00:55:35Z")
.
Quindi forme come questo funzionerà, anche se davvero non è così grande una dichiarazione:
db.collection.find({
"$where": function() {
return this._id.getTimestamp() > new Date("2014-01-01");
}
}
.
Per quanto riguarda la "creazione" dei _id
, vengono eseguiti nel "driver" o in modo esplicito dall'utente, o se ancora omesso il server genererà uno.