sql >> Databasteknik >  >> NoSQL >> MongoDB

Mongo hitta värde med okänd föräldranyckel

Jag är inte säker på att du kommer att kunna lösa detta elegant med ditt nuvarande schema; slotTypes bör vara en uppsättning underdokument, som skulle tillåta din $elemMatch fråga om att arbeta. Just nu är det ett objekt med numeriska nycklar.

Det vill säga, ditt dokumentschema ska vara något i stil med:

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

Om det inte är ett alternativ att ändra datalayouten måste du i princip skanna igenom alla dokument för att hitta matchningar med $where . Det här är långsamt, oindexerbart och besvärligt.

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

Du bör läsa dokumentationen om $where för att se till att du förstår varningarna med det, och för kärleken till allt som är heligt, sanera dina input till funktionen; detta är levande kod som körs i din databas.




  1. Finns det någon Redis-klient (föredraget Java) som stöder transaktioner på Redis-klustret?

  2. Hur skapar man ett partiellt index med variabelt datum?

  3. Uppdatera Array där den finns eller Infoga nytt Array-objekt

  4. Ta bort senaste dokument från Mongo DB i en enda fråga