Как правильно фильтровать запрос mongodb в go - PullRequest
0 голосов
/ 29 марта 2020

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

    filter := bson.M{"EntryDate": bson.M{"$gte": fromDate, "$lt": toDate}}

    res, err := db.collection.Find(context.TODO(), filter)
    if err != nil {
        panic(err)
    }

    var results []scrapper.Entry

    for res.Next(context.TODO()) {
        var elem scrapper.Entry
        res.Decode(&elem)
        results = append(results, elem)
    }
    return &results

это код, даты от и до были получены с использованием

    fromDate := time.Now().AddDate(0,0,-1)
    toDate := time.Now() 

и

        date := time.Now()
    fromDate := time.Date(date.Year(), date.Month(), date.Day(), 0, 0, 1, 0, time.UTC)
    toDate := time.Date(date.Year(), date.Month(), date.Day(), 23, 59, 59, 0, time.UTC)

ни один из подходов не был плодотворным и оба возвращают ноль, но с использованием

.find({
    entrydate: {
        $gte: ISODate("2020-03-29T00:00:00.000Z"),
        $lt: ISODate("2020-03-29T23:00:00.000Z")
    }
})

на терминал работает

1 Ответ

0 голосов
/ 29 марта 2020

когда db.collection.ReplaceOne получает структуру, она записывает все имена полей в нижнем регистре, поэтому при использовании ранее правильного имени поля для фильтра поиска возвращаемое значение равно нулю, так как поле не существует.

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