mongodb获取最近30分钟前插入的项目

时间:2019-02-10 16:48:07

标签: mongodb go

我希望在过去30分钟内使用mongodb检查是否存在添加在golang中的项目。

这是我的型号:

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 :(得分:0)

您有两个小问题要解决。

  • 如果要获取各种记录,应将one改为all
  • 您正在过滤的数据时间大于此时间,为此,您必须使用比较查询运算符$ gt

这是一个查询外观示例

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

注意:由于这将返回多个记录,因此请记住将lt切成片。