MongoDB больше, чем numberLong выпуск - PullRequest
0 голосов
/ 02 февраля 2019

Я пытаюсь получить все документы в коллекции, в которой дата хранится как:

{
  "_id": {
    "$oid": "5c500ff8df157e051961cfab"
  },
  "date": {
    "$date": {
      "$numberLong": "1548750839931"
    }
  },
  "when": "2019-1-29T8:33Z",
  "score": 20
}

... больше, чем это: 1546300800000

У меня 2 записив моей коллекции, но я ничего не получу взамен?

Вот мой запрос:

{"date":{"$gt": 1546300800000}}

Я думаю, что это как-то связано с датой, хранящейся в виде строки, но может ли онабыть готовым?

Надеемся на помощь и большое спасибо заранее: -)

1 Ответ

0 голосов
/ 02 февраля 2019

Ваша дата сохраняется в виде Date, и вы используете метку времени для поиска документов.

Итак, вы можете сначала преобразовать date в метку времени, используя $toLong оператор агрегирования, а затем используйте $gt оператор

Если вы используете mongodb 4.0

db.collection.find({
  "$expr": {
    "$gt": [{ "$toLong": "$date" }, 1546300800000]
  }
})

Если вы используете mongodb 3.6

db.collection.find({
  "$expr": {
    "$gt": [
      { "$subtract": ["$date", new Date("1970-01-01")] },
      1546300800000
    ]
  }
})

или вы можете просто преобразовать timestamp в тип date

db.collection.find({
  "date": { "$gt": new Date(1546300800000) }
})
...