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

54
Visualizações
Busque una cadena específica en un objeto anidado en documentos mongodb usando y condición

Estoy tratando de buscar documentos en mongodb que incluyan una cadena de búsqueda específica ingresada por el usuario. La colección en la que estoy tratando de buscar se llama import_products y la estructura de mi documento mongodb se parece a la siguiente.

 { ┃ _id: 61add3b16c9e0008e6ad325b, ┃ shop: 'someshop', ┃ shopUserData: { name: 'LoTesting', email: 'vixen@yahoo.com' }, ┃ productData: { ┃ title: 'Eyglo 3-in-1 Head Strap for Oculus Quest 2 with Face Silicone Cover & Controllers Grips Covers', ┃ price: 45.99, ┃ priceWithCurrency: '$45.99', ┃ images: [Array], ┃ ASIN: 'B08TWJJ3ZW', ┃ marketPlace: 'www.amazon.com', ┃ settings: [Object], ┃ shopifyProductId: 87187377131097 ┃ }, ┃ created_at: 2021-12-06T09:11:13.327Z ┃ }, ┃ { ┃ _id: 61ae236cac749b088d427497, ┃ shop: 'shomeshop', ┃ shopUserData: { name: 'LoTesting', email: 'test@gmail.com' }, ┃ productData: { ┃ title: 'Xbox Series X', ┃ description: 'Amazon Prime customers will have priority access to the Xbox Series X until November 24, 2021.', ┃ price: 'price not available', ┃ priceWithCurrency: 'price not available', ┃ images: [Array], ┃ ASIN: 'B08H75RTZ8', ┃ marketPlace: 'www.amazon.com', ┃ settings: [Object], ┃ shopifyProductId: 5736818278172 ┃ }, ┃ created_at: 2021-12-06T14:51:24.755Z ┃ },

Lo que necesito es que, para una tienda específica, debo buscar en todos los documentos de esa tienda y dentro de la propiedad del título del campo productData, necesito buscar la cadena de consulta ingresada por el usuario. Por lo tanto, necesito usar $ y condición para buscar la tienda y la cadena de consulta coincidente dentro de la propiedad del título y luego debo devolver todos los documentos que coincidan con la condición.

Intenté seguir pero sigo obteniendo una matriz vacía.

 const regex = RegExp("/.*" + searchQuery + ".*/"); response = await db .collection("imported_products") .find({ $and: [ { shop: shop }, { "productData.title": { $regex: regex, $options: "i" } }, ], }) .toArray();

Por favor, guíame por el camino correcto. Estoy usando koa.js para el servidor y next.js para el lado del cliente.

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

0

No es necesario que ingrese $and , de forma predeterminada, se cumplen todas las condiciones. También escribiste mal someshop como shomeshop en el documento 2, esa podría ser una de las razones por las que obtienes una matriz vacía. Tampoco necesita usar .* en RegExp("/.*" + searchQuery + ".*/") ya que, de forma predeterminada, si el texto coincide con cualquier parte de la entrada, la expresión regular devolverá verdadero y capturará la primera coincidencia. . Pasar una expresión regular con el operador $regex tampoco es necesario. Mi consejo es usar searchQuery.replace(/\s+/g, ' ') en su lugar. El siguiente ejemplo debería funcionar.

 db.collection("imported_products").find({ shop: shop, "productData.title": { $regex: searchQuery, $options: "i" } })

Puede probar la consulta aquí.

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