mongodb - mongodb 获取最近 30 分钟前插入的项目
问题描述
我想检查是否存在在过去 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(<)
return <, err
}
我想检查过去 30 分钟添加的数据库中是否存在项目,我当前的代码不返回任何项目,并且数据库中存在。我怎么能这样做?
解决方案
你有两件小事要在这里解决。
- 如果您想获取各种记录,您应该
one
通过以下方式更改单词all
- 您正在执行数据时间大于的过滤器,为此,您必须使用比较查询运算符 $gt
这是一个示例,您的查询应该是什么样子
collection.Find(bson.M{"owner_id": ownerID, "created_at": bson.M{"$gt": nowFormated}}).All(<)
注意:由于这将返回多条记录,请记住lt
按切片更改。
推荐阅读
- windows - Powershell Windows 用户变量 appdata
- django - django-auth-ldap 无法验证 ldap 用户
- java - 从 PEM 字符串在 Java 中创建 DSA PublicKey
- flutter - 错误:无法在 pubspec.yaml 中找到目录条目
- java - 如何在热源上使用 groupBy
- reactjs - 在不使用 axios 拦截器的情况下使用 hoc withErrorHandler 的方法?
- sql - BigQuery:返回组中不同组的第一个值
- wordpress - 自定义帖子返回的帖子计数 0
- javascript - document.createElement('a').click() 在 Firefox 中不起作用
- java - 如何在 for 循环中从 arraylist 获取所有数据总和?