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

¿Cómo contar las ocurrencias en un documento anidado en mongodb?

Hay algunas formas de abordar esto dependiendo de la cantidad de datos que necesite procesar. Podría usar el marco de agregación en MongoDB 2.2+, o posiblemente Map/Reduce . Consulte Comparación de comandos de agregación para obtener un resumen de las características y limitaciones.

Aquí hay un ejemplo usando el marco de agregación:

db.fruit.aggregate(
    // Limit matching documents (can take advantage of index)
    { $match: {
        "_id" : ObjectId("52c1d909fc7fc68ddd999a73")
    }},

    // Unpack the question & answer arrays
    { $unwind: "$questions" },
    { $unwind: "$questions.answers" },

    // Group by the answer values
    { $group: {
        _id: "$questions.answers.answer",
        count: { $sum: 1 }
    }}
)

Para su documento de muestra, esto devuelve:

{
    "result" : [
        {
            "_id" : "banana",
            "count" : 1
        },
        {
            "_id" : "apple",
            "count" : 2
        }
    ],
    "ok" : 1
}