我正在尝试检查集合以查看是否至少有一个文档与一组特定值匹配。我对 MongoDB 和 Go 还很陌生,我相信这更多是我缺乏经验的问题。以下是来自 Studio 3T 的示例查询,我尝试使用 mongo-go-driver 运行它:db.getCollection("events").find( { "event.eventType" : "OSR", "context.vehicleId" : NumberInt(919514), "ts" : { "$gte" : ISODate("2019-06-21T21:38:43.022+0000") } }).limit(1);看来该context.FindOne方法会做我想要的事情(并且消除了对 的需要.limit(1))。我认为可以直接将其“移植”到 Go 和 mongo-go-driver。我可以让这项工作正常进行,例如我有以下内容可以找到所有 OSR:var query = &bson.D{ {"event.eventType", "OSR"}, }result := bson.D{}e := collection.FindOne(context.TODO(), query).Decode(&result)这将返回给我一份文件。现在,如果我想包含该vehicleId值,我会将其更新query为:var query = &bson.D{ {"event.eventType", "OSR"}, {"context.vehicleId", 919514}, }没有文件被退回。我还没有费心去扩展query该ts领域。我预计至少仍会返回一份文档,但什么也没有显示。有人对我做错的事情有一些提示、建议或指导吗(或者我怎样才能做得更好)?
1 回答

开满天机
TA贡献1786条经验 获得超13个赞
不太确定,但是你尝试过bson.M用 代替 吗bson.D?
看来它至少对我有用。
query := &bson.M{
"event.eventType": "OSR",
"context.vehicleId": 919514,
}
- 1 回答
- 0 关注
- 138 浏览
添加回答
举报
0/150
提交
取消