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

Mongo encontra valor com chave pai desconhecida


Não tenho certeza se você conseguirá resolver isso de forma elegante com seu esquema atual; slotTypes deve ser um array de subdocumentos, o que permitiria que seu $elemMatch consulta para trabalhar. No momento, é um objeto com teclas numéricas.

Ou seja, o esquema do seu documento deve ser algo como:
{
   "assetsId": {
     "0": "546cf2f8585ffa451bb68369"
  },
   "slotTypes": [
     { "usage": "json" },
     { "usage": "image" }
  ]
}

Se alterar o layout de dados não for uma opção, você precisará basicamente varrer todos os documentos para encontrar correspondências com $where . Isso é lento, não indexável e desajeitado.
db.objects.find({$where: function() {
  for(var key in this.slotTypes) {
    if (this.slotTypes[key].usage == "json") return true;
  }
  return false;
}})

Você deve ler a documentação em $where para certificar-se de que você entende as advertências dele, e pelo amor de tudo o que é sagrado, higienize suas entradas para a função; este é o código ao vivo que está sendo executado no contexto do seu banco de dados.