MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

mongoDB. четене, търсене на времеви печат въз основа на oplog

Timestamp стойностите, които виждате в oplog, са вътрешен MongoDB тип BSON. Първият аргумент es в представянето като функция Timestamp(es, ord) е time_t стойност на секунди от епохата на Unix. Вторият е порядък, който подрежда времеви отпечатъци в рамките на една секунда. Трябва да можете да направите заявка Timestamp обикновено с $gt , $lt и т.н.:

> db.ts.find()
{ "_id" : ObjectId("53eb914ff9b63e0dd3ca1a20"), "ts" : Timestamp(1406185666, 1) }
{ "_id" : ObjectId("53eb915cf9b63e0dd3ca1a21"), "ts" : Timestamp(1405914581, 1) }
{ "_id" : ObjectId("53eb917cf9b63e0dd3ca1a22"), "ts" : Timestamp(1406185666, 2) }

> db.ts.find({ "ts" : { "$gte" : Timestamp(1406185630, 1) } })
{ "_id" : ObjectId("53eb914ff9b63e0dd3ca1a20"), "ts" : Timestamp(1406185666, 1) }
{ "_id" : ObjectId("53eb917cf9b63e0dd3ca1a22"), "ts" : Timestamp(1406185666, 2) }

> db.ts.find({ "ts" : { "$gt" : Timestamp(1406185666, 1) } })
{ "_id" : ObjectId("53eb917cf9b63e0dd3ca1a22"), "ts" : Timestamp(1406185666, 2) }

За да отговорите на вашите конкретни въпроси (в mongo shell),

> var SECS_PER_HOUR = 3600
> var now = Math.floor((new Date().getTime()) / 1000) // seconds since epoch right now
> db.oplog.rs.find({ "ts" : { "$lt" : Timestamp(now, 1), "$gt" : Timestamp(now - SECS_PER_HOUR, 1) } })

Не сте посочили часова зона - внимавайте за това и направете правилния избор.

> var since = Math.floor(ISODate("2014-08-12T09:00:00.000Z").getTime() / 1000)
> var until = Math.floor(ISODate("2014-08-12T15:00:00.000Z").getTime() / 1000)
> db.oplog.rs.find({ "ts" : { "$lt" : Timestamp(until, 1), "$gt" : Timestamp(since, 1) } })



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Каква версия на MongoDB е инсталирана на Ubuntu

  2. BASH BSON анализатор

  3. Мангуста - причинена от ::11000 E11000 дублиран ключов индекс на грешка?

  4. Mongoose добавя няколко обекта към масива, ако не съществува

  5. `полетата не могат да бъдат идентични:' ' и ' '` mongoimport грешка