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

Solución de almacén de datos para la búsqueda de etiquetas

Mongodb puede manejar lo que quieras, si almacenaste tus objetos así

{ score:2131, attributes: ["attr1", "attr2", "attr3"], ... }

Luego, la siguiente consulta coincidirá con todos los elementos que tienen att1 y attr2

c = db.mycol.find({ attributes: { $all: [ "attr1", "attr2" ] } })

pero esto no coincidirá

c = db.mycol.find({ attributes: { $all: [ "attr1", "attr4" ] } })

la consulta devuelve un cursor, si desea que este cursor se ordene, simplemente agregue los parámetros de clasificación a la consulta de esta manera

c = db.mycol.find({ attributes: { $all: [ "attr1", "attr2" ] }}).sort({score:1})

Eche un vistazo a Consultas avanzadas para ver qué es posible.

Los índices apropiados se pueden configurar de la siguiente manera

db.mycol.ensureIndex({attributes:1, score:1})

Y puede obtener información de rendimiento usando

db.mycol.find({ attributes: { $all: [ "attr1" ] }}).explain()

Mongo explica cuántos objetos se escanearon, cuánto duró la operación y varias otras estadísticas.