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

120
Visualizações
MongoDB imprime solo un valor de una colección. JavaScript

Tengo un problema con la consola MongoDB. Registro solo un dato de una colección. Ya he buscado como infinitos temas sobre esto, pero ninguno hace exactamente lo que quiero. Quiero obtener datos de un número de mi base de datos de mangosta. (Estoy creando un bot discord.js) Así es como se ve la base de datos:

 _id: 61bb8dc5a23c9a077066abf0 user: "soki#2400" userId: "466270219132731392" amount: 16 __v: 0

y quiero console.log() el valor de la amount .

Este es mi código ahora:

 console.log(giftsSchema.find({"_id": 0},{"user": msg.author.tag},{"userId": msg.author.id}).amount);

Entonces, lo que quiero que imprima es:

 16

pero se imprime

 undefined
about 4 years ago · Juan Pablo Isaza
2 Respostas
Responde à pergunta

0

Creo que quiere buscar en dos campos user y userId . Deberías usar esto:

 giftsSchema.findOne( {"user": msg.author.tag, "userId": msg.author.id}, // query function (err, user) { console.log(user.amount); });

Si desea usar la proyección para que solo se devuelva el campo de cantidad, proporcione un segundo parámetro con los campos que desea 1 y no desea 0.

 giftsSchema.findOne( {"user": msg.author.tag, "userId": msg.author.id}, // query {_id: 0, amount: 1}, // projection function (err, user) { console.log(user.amount); });

En su ejemplo, está proporcionando 3 parámetros {"_id": 0} , {"user": msg.author.tag} y {"userId": msg.author.id} . Con find() el primer parámetro es la consulta/filtro. Entonces, en su código, está consultando todos los registros donde _id = 0 y no creo que quiera eso. El segundo parámetro es para proyección, y proporcionó un objeto no válido para eso, los valores de proyección solo deben ser 1 o 0 como su primer parámetro. El tercer parámetro es para opciones y no entra en juego aquí.

Desea consultar varios campos al tenerlos en un solo objeto como este { field1 : value1, field2 : value2 } . También creo que solo desea un resultado, por lo que debe usar findOne() en su lugar para que solo obtenga un único objeto a cambio y no una matriz de objetos.

Además, Mongoose es asíncrono. Por lo tanto, debe hacer una función async y await el resultado. O puede proporcionar una función de devolución de llamada como se muestra en mi ejemplo. NOTA: No manejo el caso de err en mi ejemplo.

about 4 years ago · Juan Pablo Isaza Relatório

0

El método .find() devolverá una Promesa. Primero debe esperar a que se resuelva esa Promesa antes de registrar el resultado. Intenta hacerlo de esta manera:

 const someFunction = async () => { let result = await giftsSchema.find({ "user": msg.author.tag, "userId": msg.author.id }, { _id: 0, amount: 1 }); console.log('Result: ', result.amount); }
about 4 years ago · Juan Pablo Isaza 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