sql >> Databáze >  >> NoSQL >> MongoDB

Najděte záznamy s polem ve vnořeném dokumentu, když nadřazená pole nejsou známa

Chcete-li hledat klíč ve vnořeném dokumentu, musíte pole dokumentů opakovat rekurzivně, můžete to udělat v JavaScriptu pomocí $where metoda v MongoDBNíže uvedený dotaz vyhledá, zda existuje název klíče v dokumentech a jejich vnořených dokumentech.

Zkontroloval jsem to na příkladu, který jste uvedl, a funguje to naprosto dobře.

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. Jak odstranit dokumenty z více kolekcí na základě ID v MongoDB?

  2. Volání funkce db.system.js v $where

  3. Mongodb - aktualizace dílčího počtu dokumentů

  4. server vrátil chybu v kroku ověřování SASL:Autentizace se nezdařila