Sé MongoDB es capaz de manejar una gran cantidad de peticiones/seg., pero digamos que tengo para consultar una gran cantidad de documentos de una colección dada su _id; lo que suena mejor: hacer un $en el _id atributo con todos los identificadores que quiero conseguir, o un bucle en findOne consultas?

InformationsquelleAutor spacenick | 2011-11-21

1 Comentario

  1. 46

    Definitivamente, me gustaría ir con la utilización de la $en consulta y proporcionar una matriz de _ids.

    Ejemplo:

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

    ¿Por qué?

    • Si usted bucle, hay una cierta cantidad de la instalación y desmontaje para cada consulta de creación y de agotar los cursores que crearía sobrecarga.
    • Si usted no está haciendo esto en una máquina local también crea tcp/ip de la carga para cada solicitud. Localmente se podría utilizar sockets de dominio.
    • No es un índice de la «_id» creado por defecto y la recopilación de un grupo de documentos a devolver en un lote solicitud debe ser muy rápido, así que no hay necesidad de romper este en pequeñas consultas.

    Hay alguna documentación adicional aquí si quieres echarle un vistazo.

    • Lo que si hay un montón de elementos en el $en… digo 100, o 1000?
    • nada hasta 1000 general, está bien. Después de que me gustaría reconsiderar el esquema que tenemos y comenzar a pre-cómputo de los datos.
    • puede $in ser utilizado en una variedad de objetos JSON?

Dejar respuesta

Please enter your comment!
Please enter your name here