【发布时间】:2019-07-02 17:09:37
【问题描述】:
我正在尝试检查一个集合,看看是否至少有一个文档与一组特定的值匹配。
我已尝试阅读https://github.com/mongodb/mongo-go-driver#usage 的文档,但我似乎无法在那里找到太多帮助。我对 MongoDB & Go 很陌生,我相信这更多是我缺乏经验的问题。
这是我尝试使用 mongo-go-driver 运行的来自 Studio 3T 的示例查询:
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 字段。
我希望 at 仍然至少返回一个文档,但没有显示任何内容。是否有人对我做错了什么(或者我可以如何做得更好)有一些提示、建议或指导?
【问题讨论】:
-
你的代码有效,你确定你在正确的数据库和集合上