Maison  >  Article  >  développement back-end  >  Comment interroger la plage de dates MongoDB dans Go avec mgo ?

Comment interroger la plage de dates MongoDB dans Go avec mgo ?

Linda Hamilton
Linda Hamiltonoriginal
2024-11-05 15:47:02440parcourir

How to Query MongoDB Date Range in Go with mgo?

Interrogation d'une plage de dates MongoDB dans Go avec mgo

Lorsque vous travaillez avec MongoDB, l'interrogation de documents en fonction de plages de dates est une opération courante. Cet article explique comment effectuer de telles requêtes à l'aide de mgo, un pilote MongoDB pour Go.

Problème :

Vous disposez d'une collection MongoDB nommée "my_sales" avec des champs pour le produit. nom, prix et date de vente. Vous devez récupérer tous les enregistrements de ventes dans une plage de dates spécifique à l'aide de Go et mgo.

Solution :

mgo prend en charge l'interrogation de dates à l'aide du type time.Time. Par conséquent, pour l'exemple donné avec la structure de document suivante :

<code class="go">type Sale struct {
    ProductName string    `bson:"product_name"`
    Price       int       `bson:"price"`
    SaleDate    time.Time `bson:"sale_date"`
}</code>

Pour interroger les ventes dans la plage de dates spécifiée, vous pouvez utiliser le code suivant :

<code class="go">package main

import (
    "context"
    "fmt"
    "log"
    "time"

    "gopkg.in/mgo.v2"
    "gopkg.in/mgo.v2/bson"
)

func main() {
    // Connect to MongoDB
    session, err := mgo.Dial("localhost:27017")
    if err != nil {
        log.Fatal(err)
    }
    defer session.Close()

    // Get a collection
    c := session.DB("my_db").C("my_sales")

    // Define the date range
    fromDate := time.Date(2014, time.November, 4, 0, 0, 0, 0, time.UTC)
    toDate := time.Date(2014, time.November, 5, 0, 0, 0, 0, time.UTC)

    // Query the collection
    results := []Sale{}
    err = c.Find(
        bson.M{
            "sale_date": bson.M{
                "$gt": fromDate,
                "$lt": toDate,
            },
        }).All(&results)
    if err != nil {
        log.Fatal(err)
    }

    // Print the results
    for _, sale := range results {
        fmt.Println(sale)
    }
}</code>

En fournissant le bson .M avec les critères de plage de dates appropriés, vous pouvez récupérer toutes les ventes réalisées entre les dates spécifiées.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn