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

Diff() entre dos colecciones en MongoDB

Un par de sugerencias:

Puede usar una combinación de URL y la fecha de acceso (al menos parte del objeto de fecha y hora) como _id para estos objetos, ya que, por lo que puedo decir, planea raspar cada URL una vez al mes.

Ejemplo:

{
    "_id": {
        "url": "www.google.com",
        "date": ISODate("2013-03-01"),
    },
    // Other attributes
}

Esto produce dividendos de rendimiento, singularidad y consulta (ver esta publicación de blog 4sq ). Podría consultar haciendo algo como:

db.collection.find({
    "_id": {
        "$gte": {
            "url": yourUrl,
            "date": rangeStart
         },
         "$lt": {
            "url": yourUrl,
            "date": rangeEnd
         },
    }
})

Lo que produce resultados excelentes, bien ordenados (por url LUEGO por fecha, que parece ser justo lo que desea). También puede usar este índice para realizar consultas cubiertas (sobre el campo _id) si solo desea un buen conjunto de todas las direcciones URL y los meses que ha rastreado (esto podría configurarlo bien para revisar cada dirección URL una a la vez) .

Si tiene atributos específicos del documento que le interesa comparar (headers.server por ejemplo) y una comparación específica que desea hacer por ellos (buscando cualquier incremento en los números de versión, por ejemplo), usaría algún tipo de expresión regular para capturar los elementos relevantes para el número de versión (uno rápido y sucio podría simplemente recuperar todos elementos numéricos) y graficarlos para cada URL (supongo que esto le permitiría visualizar los cambios en el software del servidor a lo largo del tiempo). Podría informar fácilmente cada vez que alguno de estos atributos cambiara escaneándolos en orden y activando algún evento cuando las cadenas no fueran idénticas (quizás luego informando el cambio o la parte numérica del cambio).