MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Solução de armazenamento de dados para pesquisa de tags


Mongodb pode lidar com o que você quiser, se você armazenou seus objetos assim
{ score:2131, attributes: ["attr1", "attr2", "attr3"], ... }

Em seguida, a consulta a seguir corresponderá a todos os itens que possuem att1 e attr2
c = db.mycol.find({ attributes: { $all: [ "attr1", "attr2" ] } })

mas isso não vai corresponder
c = db.mycol.find({ attributes: { $all: [ "attr1", "attr4" ] } })

a consulta retorna um cursor, se você deseja que esse cursor seja classificado, basta adicionar os parâmetros de classificação à consulta assim
c = db.mycol.find({ attributes: { $all: [ "attr1", "attr2" ] }}).sort({score:1})

Dê uma olhada em Consultas avançadas para ver o que é possível.

Índices apropriados podem ser configurados da seguinte forma
db.mycol.ensureIndex({attributes:1, score:1})

E você pode obter informações de desempenho usando
db.mycol.find({ attributes: { $all: [ "attr1" ] }}).explain()

Mongo explica quantos objetos foram verificados, quanto tempo a operação levou e várias outras estatísticas.