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

MongoDB:desempenho de consulta degradado


1º:Suas consultas são muito complicadas. Usando $elemMatch com muita frequência. 2º:se você puder incluir sua chave de fragmentação na consulta, isso melhorará drasticamente a velocidade.

Vou otimizar suas consultas para você:
db.user.find({
     createdAt: {
          $gte: ISODate("2014-12-01"), 
          $lte: ISODate("2014-12-31")
     }
}).explain()

db.user.find({
    'transaction.product':'mobile'
}).explain()

db.user.find({
    'transaction.product':'mobile', 
    firstTransaction:{
       $in:[
           ISODate("2015-01-01"),
           ISODate("2015-01-02")
       ]
    }
}).explain()

A linha inferior é esta:incluir sua chave de fragmentação cada vez é uma economia de tempo.

Pode até economizar tempo para percorrer suas chaves de fragmentação e fazer a mesma consulta várias vezes.