MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Mongo trouve une valeur avec une clé parent inconnue

Je ne suis pas sûr que vous puissiez résoudre ce problème avec élégance avec votre schéma actuel ; slotTypes devrait être un tableau de sous-documents, ce qui permettrait à votre $elemMatch requête pour travailler. Pour l'instant, c'est un objet avec des touches numériques.

Autrement dit, votre schéma de document devrait ressembler à :

{
   "assetsId": {
     "0": "546cf2f8585ffa451bb68369"
  },
   "slotTypes": [
     { "usage": "json" },
     { "usage": "image" }
  ]
}

Si la modification de la mise en page des données n'est pas une option, vous devrez essentiellement parcourir chaque document pour trouver des correspondances avec $where . C'est lent, non indexable et gênant.

db.objects.find({$where: function() {
  for(var key in this.slotTypes) {
    if (this.slotTypes[key].usage == "json") return true;
  }
  return false;
}})

Vous devriez lire la documentation sur $where pour vous assurer que vous en comprenez les mises en garde, et pour l'amour de tout ce qui est saint, désinfectez vos entrées à la fonction ; c'est du code live qui s'exécute dans le contexte de votre base de données.