Я пытаюсь проверить коллекцию, чтобы увидеть, есть ли хотя бы один документ, который соответствует определенному набору значений.
Я пытался прочитать документацию по адресу https://github.com/mongodb/mongo-go-driver#usage,, но, похоже, не могу найти там большую помощь.Я довольно новичок в MongoDB & Go, я считаю, что это скорее проблема моего отсутствия опыта.
Вот пример запроса из Studio 3T, который я пытаюсь запустить с mongo-go-драйвер:
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
.
Я ожидал, что по-прежнему будет возвращен хотя бы один документ, но ничего не отображается.У кого-нибудь есть какие-либо советы, предложения или рекомендации о том, что я делаю неправильно (или, возможно, как я могу сделать это лучше)?