sql >> Database >  >> NoSQL >> MongoDB

Mongo vindt waarde met onbekende bovenliggende sleutel

Ik weet niet zeker of je dit elegant kunt oplossen met je huidige schema; slotTypes zou een array van subdocumenten moeten zijn, waardoor uw $elemMatch vraag om te werken. Op dit moment is het een object met numerieke toetsen.

Dat wil zeggen, uw documentschema zou er ongeveer zo uit moeten zien:

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

Als het wijzigen van de gegevenslay-out geen optie is, moet u in principe door elk document scannen om overeenkomsten te vinden met $where . Dit is traag, niet-indexeerbaar en onhandig.

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

Lees de documentatie over $where om ervoor te zorgen dat u de waarschuwingen ervan begrijpt, en voor de liefde van alles wat heilig is, uw ingangen voor de functie zuiveren; dit is live code die wordt uitgevoerd in de context van uw database.




  1. best practice voor gegevenssynchronisatie in nodejs

  2. MongoDB-client gooit een FileNotFoundException in mscorlib

  3. MongoDB - hoe een record in te voegen met de functie voor automatisch verhogen

  4. MongoDB-omgeving instellen | Installeer MongoDB op Windows