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

Намерете записи с поле във вложен документ, когато родителските полета не са известни

За да търсите ключ във вложен документ, трябва да повторите полетата на документите рекурсивно, можете да направите това в JavaScript с помощта на $where метод в MongoDB. Заявката по-долу ще търси дали име на ключ съществува в документи и техните поддокументи.

Проверих това с примера, който сте дали, и той работи перфектно.

db.getCollection('test').find({ $where: function () {
    var search_key = "lev3_field2";

    function check_key(document) {
      return Object.keys(document).some(function(key) {
        if ( typeof(document[key]) == "object" ) {
            if ( key == search_key ) {
                return true;
            } else {
                return check_key(document[key]);
            }
        } else {
          return ( key == search_key );
        }
      });
    }
    return check_key(this);
  }}

);


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Грешка в MongoDB Atlas при извършване на транзакция на множество колекции (код 8000)

  2. MongoDB индексиране за приложение на Parse Server

  3. Резултат от заявка от mongoose с помощта на динамичен model.find

  4. mongodb актуализира последния елемент на масива

  5. MongoDb персонализиран сериализатор на колекция