Comment puis-je extraire la date créée à partir d'un objet Mongo
j'utilise le shell Mongo pour interroger Mongo db. Je veux utiliser l'horodatage contenu dans L'ObjectID comme partie de ma requête et aussi comme colonne pour extraire en sortie. J'ai configuré Mongo pour créer des objectifs tout seul.
mon problème est que je ne peux pas trouver comment travailler avec L'ObjectID pour extraire son horodatage.
Voici les requêtes que j'essaie de faire fonctionner. Le champ' createdDate ' est un placeholder; pas sûr de ce que le bon le champ est:
//Find everything created since 1/1/2011
db.myCollection.find({date: {$gt: new Date(2011,1,1)}});
//Find everything and return their createdDates
db.myCollection.find({},{createdDate:1});
3 réponses
méthode gettimestamp()
la fonction dont vous avez besoin est celle-ci, elle est incluse pour vous déjà dans le shell:
ObjectId.prototype.getTimestamp = function() {
return new Date(parseInt(this.toString().slice(0,8), 16)*1000);
}
Références
consultez cette section des documents:
ce test unitaire démostre également le même:
exemple utilisant le shell Mongo:
> db.col.insert( { name: "Foo" } );
> var doc = db.col.findOne( { name: "Foo" } );
> var timestamp = doc._id.getTimestamp();
> print(timestamp);
Wed Sep 07 2011 18:37:37 GMT+1000 (AUS Eastern Standard Time)
> printjson(timestamp);
ISODate("2011-09-07T08:37:37Z")
cette question est utile pour comprendre comment utiliser l'horodatage intégré de _id dans des situations de requête (se réfère à la documentation Mongo Extended JSON ). C'est comme ça qu'on fait:
col.find({...,
'_id' : {'$lt' : {'$oid' : '50314b8e9bcf000000000000'}}
})
trouve des documents créés plus tôt que ceux donnés par l'oid. Utilisé avec le tri naturel et la limitation, vous pouvez utiliser BSON _ids pour créer des requêtes API de type Twitter ( donnez - moi le dernier OID vous ont et je vais vous donner plus d'une vingtaine d' )
en python vous pouvez faire ceci:
>>> from bson.objectid import ObjectId
>>> gen_time = datetime.datetime(2010, 1, 1)
>>> dummy_id = ObjectId.from_datetime(gen_time)
>>> result = collection.find({"_id": {"$lt": dummy_id}})
je pense, ObjectId.from_datetime() - c'est une méthode utile de la norme bfils lib Peut-être que d'autres reliures de langage ont une fonction alternative. Source: http://api.mongodb.org/python/current/api/bson/objectid.html