sql >> Databáze >  >> NoSQL >> MongoDB

Mongo najít hodnotu s neznámým nadřazeným klíčem

Nejsem si jistý, že to dokážete elegantně vyřešit se svým současným schématem; slotTypes by mělo být pole dílčích dokumentů, které by umožnily váš $elemMatch dotaz do práce. Právě teď je to objekt s numerickými klávesami.

To znamená, že schéma vašeho dokumentu by mělo být něco jako:

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

Pokud změna rozvržení dat není možná, pak budete muset v podstatě prohledat každý dokument, abyste našli shodu s $where . Je to pomalé, neindexovatelné a nešikovné.

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

Měli byste si přečíst dokumentaci o $where abyste se ujistili, že rozumíte jeho upozorněním, a z lásky ke všemu, co je svaté, dezinfikujte své vstupy do funkce; toto je živý kód, který se spouští v kontextu vaší databáze.




  1. Jak nastavit featureCompatibilityVersion v MongoDB

  2. Nejlepší zdroje MongoDB

  3. Velikost pole agregace Mongo DB je větší než shoda

  4. MongoDB+Azure+Android:Chyba:com.mongodb.MongoException:nemluví s masterem a opakované pokusy jsou vyčerpány