Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

171
Visualizações
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 Respostas
Responde à pergunta

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda