MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Mongo znajduje wartość z nieznanym kluczem nadrzędnym

Nie jestem pewien, czy będziesz w stanie elegancko rozwiązać ten problem przy użyciu obecnego schematu; slotTypes powinna być tablicą dokumentów podrzędnych, która pozwoliłaby na $elemMatch zapytanie do pracy. W tej chwili jest to obiekt z klawiszami numerycznymi.

Oznacza to, że Twój schemat dokumentu powinien wyglądać mniej więcej tak:

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

Jeśli zmiana układu danych nie wchodzi w grę, będziesz musiał przeskanować każdy dokument, aby znaleźć dopasowania z $where . Jest to powolne, nieindeksowalne i niezręczne.

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

Powinieneś przeczytać dokumentację na $where aby upewnić się, że rozumiesz jego zastrzeżenia, i z miłości do wszystkiego, co święte, zdezynfekuj swój wkład w tę funkcję; to jest kod na żywo, który jest wykonywany w kontekście Twojej bazy danych.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. jak zaktualizować zagnieżdżony obiekt dokumentu mangusty tylko dla dostarczonych kluczy

  2. Kompas wiosenny mongodb brak utworzonych danych/kolekcji

  3. Mongoose.js tworzy wiele połączeń do MongoDB z jednego wywołania connect()

  4. Jaki jest pożytek z Jade lub Handlebars podczas pisania aplikacji AngularJs

  5. Jaka jest różnica między COUNT_SCAN a IXSCAN?