sql >> Database teknologi >  >> NoSQL >> MongoDB

Mongo find værdi med ukendt overordnet nøgle

Jeg er ikke sikker på, at du vil være i stand til at løse dette elegant med dit nuværende skema; slotTypes bør være en række underdokumenter, som ville tillade din $elemMatch forespørgsel om at arbejde. Lige nu er det et objekt med numeriske taster.

Det vil sige, dit dokumentskema skal være noget i stil med:

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

Hvis ændring af datalayoutet ikke er en mulighed, bliver du dybest set nødt til at scanne gennem hvert dokument for at finde match med $where . Dette er langsomt, uindekserbart og akavet.

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æse dokumentationen om $where for at sikre, at du forstår forbeholdene ved det, og af kærlighed til alt, hvad der er helligt, skal du rense dine input til funktionen; dette er live kode, der udføres i konteksten af ​​din database.




  1. Importer CSV ved hjælp af Mongoose Schema

  2. MongoDB version 2.6 fejler stadig på 2dsphere geoindeksering med henvisning til manglende evne til at udtrække geonøgler og mulig misformet geometri

  3. Ikke-genkendt felt:'ntoreturn'-fejl i documenDB

  4. Spring Data Mongo - anvend unikke kombinationsfelter i indlejret dokument