Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

168
Views
El filtro Mongo funciona dentro del shell mongo pero no funciona cuando está escrito en go

Mongo: 4.4 Ir: 1.17.3

Estoy tratando de obtener documentos con un valor de campo de cadena de más de cuatro símbolos. Aquí está la consulta que uso dentro del shell de mongo:

 db.player.find({ "name": { "$exists": true }, "$expr": { "$gt": [ { "$strLenCP": "$name" }, 4 ] } })

Y aquí está la misma consulta pero codificada como filtro bson en go :

 longName := bson.M{ "name": bson.M{"$exists": true}, "$expr": bson.M{ "$gt": bson.A{ bson.M{"$strLenCP": "$name"}, 4, }, }, }
 fmc, err := collection.Find(context.TODO(), longName) if err != nil { log.Panic(err) } var longBoi models.Player err = fmc.Decode(&longBoi) if err != nil { log.Panic(err) // panic here: // 2021/12/15 15:53:46 EOF // panic: EOF }

El primero generará los documentos deseados con una longitud de valor de campo de cadena superior a cierto número. El segundo generará un error con solo EOF , marca de tiempo y pila de llamadas. El depurador dice que el batch dentro del cursor fmc no contiene datos.

¿Qué hay de malo en el segundo caso?

over 4 years ago · Santiago Trujillo
1 answers
Answer question

0

Lo siguiente soluciona el problema:

 var longBoi []models.Player err = fmc.All(context.TODO(), &longBoi) if err != nil { log.Panic(err) }

Find() devuelve el Cursor() , no los documentos. Luego, el cursor se puede usar para iterar sobre documentos que coincidan con el filtro llamando a All() o algún otro método.

over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!