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

Mongodb:operador $in frente a muchas consultas individuales

Definitivamente usaría la consulta $in y proporcionaría una matriz de _ids.

Ejemplo:

db.collection.find({
    "key": {
        "$in": [
            ObjectId("xxx"),
            ObjectId("yyy"),
            ObjectId("zzz")
        ]
    }
})

¿Por qué?

  • Si realiza un ciclo, hay una cierta cantidad de configuración y eliminación para cada consulta que crea y agota los cursores, lo que generaría una sobrecarga.
  • Si no está haciendo esto en una máquina local, también crea una sobrecarga de tcp/ip para cada solicitud. Localmente podría usar sockets de dominio.
  • Hay un índice en "_id" creado de forma predeterminada y la recopilación de un grupo de documentos para devolver en una solicitud por lotes debería ser extremadamente rápida, por lo que no es necesario dividir esto en consultas más pequeñas.

Hay documentación adicional aquí si desea consultarla.