MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Mongo намери стойност с неизвестен родителски ключ

Не съм сигурен, че ще можете да разрешите елегантно това с настоящата си схема; slotTypes трябва да бъде масив от поддокументи, което ще позволи на вашия $elemMatch заявка за работа. В момента това е обект с цифрови ключове.

Тоест схемата на вашия документ трябва да бъде нещо като:

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

Ако промяната на оформлението на данните не е опция, тогава ще трябва основно да сканирате всеки документ, за да намерите съвпадения с $where . Това е бавно, неиндексируемо и неудобно.

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

Трябва да прочетете документацията за $where за да сте сигурни, че разбирате предупрежденията за това и за любовта към всичко, което е свято, дезинфекцирайте въведените данни във функцията; това е код на живо, който се изпълнява в контекста на вашата база данни.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Добър начин за справяне с MongoError:пулът от сървърни екземпляри беше унищожен

  2. пролетни данни Mongo db агрегиране

  3. Ruby on Rails Mongoid и Webfaction:Не е разрешено за заявка (Грешка 16550)

  4. Премахване на поддокумент от масив в MongodDB

  5. Как да форматирате числа със запетаи в SQL