sql >> Database >  >> NoSQL >> MongoDB

Kan ik MongoDB ObjectId op datum opvragen?

Door tijdstempels in ObjectIds te plaatsen, worden zoekopdrachten tot in detail behandeld op basis van datums die zijn ingesloten in de ObjectId.

Kort in JavaScript-code:

/* This function returns an ObjectId embedded with a given datetime */
/* Accepts both Date object and string input */

function objectIdWithTimestamp(timestamp) {
    /* Convert string date to Date object (otherwise assume timestamp is a date) */
    if (typeof(timestamp) == 'string') {
        timestamp = new Date(timestamp);
    }

    /* Convert date object to hex seconds since Unix epoch */
    var hexSeconds = Math.floor(timestamp/1000).toString(16);

    /* Create an ObjectId with that hex timestamp */
    var constructedObjectId = ObjectId(hexSeconds + "0000000000000000");

    return constructedObjectId
}


/* Find all documents created after midnight on May 25th, 1980 */
db.mycollection.find({ _id: { $gt: objectIdWithTimestamp('1980/05/25') } });


  1. Hoe op te slaan in Redis gesorteerde set met server-side tijdstempel als score?

  2. MongoDB versus MySQL

  3. Hoe kan ik verwijderde ruimte terugwinnen zonder `db.repairDatabase()`?

  4. Hoe stel ik _id in op db-document in Mongoose?