sql >> Base de Datos >  >> NoSQL >> MongoDB

operaciones sql 'me gusta' en números en mongodb

No almacene números de teléfono como números enteros. Guárdelos como cadenas. Cuando tiene un valor que consta solo de dígitos y en el que la aritmética no tiene sentido, como un código postal, un número de cuenta bancaria o un número de teléfono, almacenarlo como un número no tiene mucho sentido.

  • Como ya notó, los números son casi imposibles de buscar cuando desea buscar una secuencia de dígitos, porque los sistemas informáticos almacenan números enteros en binario, no en decimal.
  • No puede tener ceros a la izquierda
  • Cuando el número es demasiado largo, encontrará un desbordamiento de enteros o lo convertirá en un número de punto flotante (a discreción de su controlador MongoDB). Ambos darán como resultado un comportamiento muy extraño.

Por cierto, todo esto se aplica a casi cualquier base de datos, no solo a MongoDB.

Pero si está absolutamente decidido a mantenerlos como números, aquí hay dos cosas que puede hacer.

  1. Cuando se fija el número de dígitos desconocidos, puede usar el $gt y $lt operadores para buscar un rango. contactphone:{$gt:5556000, $lt:5556999} encontraría todos los números con el patrón 5556xxx .
  2. Podría usar un $where -query que usa una función javascript para convertir internamente cada número en una cadena y luego aplica su expresión regular a esa cadena. $where: "String(this.contactphone).match(/^4832/) != null" . Espero que no tenga muchos documentos en su base de datos, porque cuando los tenga, esta consulta podría demorar un poco.