Создание фильтра в mongo-go-driver для .FindOne - PullRequest
2 голосов
/ 02 июля 2019

Я пытаюсь проверить коллекцию, чтобы увидеть, есть ли хотя бы один документ, который соответствует определенному набору значений.

Я пытался прочитать документацию по адресу 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.

Я ожидал, что по-прежнему будет возвращен хотя бы один документ, но ничего не отображается.У кого-нибудь есть какие-либо советы, предложения или рекомендации о том, что я делаю неправильно (или, возможно, как я могу сделать это лучше)?

1 Ответ

1 голос
/ 03 июля 2019

Не совсем уверен, но пробовали ли вы с bson.M вместо bson.D?

Похоже, это работает для меня по крайней мере.

query := &bson.M{
  "event.eventType": "OSR",
  "context.vehicleId": 919514, 
}

Пожалуйста, обратитесь к документы для получения дополнительной информации.

Кроме того, как сказал @owlwalks, вы уверены, что находитесь в нужной коллекции?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...