mongodb получить элементы, вставленные в последние 30 минут назад - PullRequest
0 голосов
/ 10 февраля 2019

Я хочу проверить, существует ли добавленный элемент за последние 30 минут в golang с mongodb.

это мой тип моделей:

type PayCoin struct {
    ID            bson.ObjectId `json:"id" bson:"_id"`
    OwnerID       bson.ObjectId `json:"owner_id" bson:"owner_id"`
    PublicKey     string        `json:"public_key" bson:"public_key"`
    PrivateKey    string        `json:"-" bson:"private_key"`
    QrCode        string        `json:"qrcode" bson:"-"`
    ExchangeRate  uint64        `json:"exchange_rate" bson:"exchange_rate"`
    DepositAmount float32       `json:"deposit_amount" bson:"deposit_amount"`
    Received      uint64        `json:"received" bson:"received"`
    Completed     bool          `json:"-" bson:"completed"`
    CreatedAt     time.Time     `json:"created_at" bson:"created_at"`
    UpdatedAt     time.Time     `json:"updated_at" bson:"updated_at"`
}

это моя текущая функция:

func (s *Storage) CoinPayExistOperation(ownerID bson.ObjectId) (*models.PayCoin, error) {
    collection := s.getCoinPay()
    var lt models.PayCoin
    timeFormat := "2006-01-02 15:04:05"
    now := time.Now()
    after := now.Add(-30*time.Minute)
    nowFormated := after.Format(timeFormat)


    err := collection.Find(bson.M{"owner_id": ownerID, "created_at": nowFormated}).One(&lt)
    return &lt, err
}

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

1 Ответ

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

У вас есть две небольшие вещи, которые нужно исправить здесь.

  • Если вы хотите получить различные записи, вы должны изменить слово one на all
  • , вы делаетефильтр, где время ваших данных больше, чем, для этого вы должны использовать оператор запроса сравнения $ gt

вот пример, как ваш запрос должен выглядеть как

collection.Find(bson.M{"owner_id": ownerID, "created_at": bson.M{"$gt": nowFormated}}).All(&lt)

Примечание: поскольку при этом будет возвращено несколько записей, не забудьте изменить lt на срез.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...