sql >> Database >  >> NoSQL >> MongoDB

Vind records met veld in een genest document wanneer bovenliggende velden niet bekend zijn

Om een ​​sleutel in een genest document te zoeken, moet u de documentvelden recursief herhalen, u kunt dit in JavaScript doen met behulp van $where methode in MongoDBDe onderstaande zoekopdracht zoekt of er een sleutelnaam bestaat in een document en zijn subdocumenten.

Ik heb dit gecontroleerd met het voorbeeld dat je hebt gegeven, en het werkt prima.

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. Geef een grote array door aan het onderliggende proces van het knooppunt

  2. Subset van velden bijwerken met Mongoose

  3. Is er een lengtelimiet voor veldwaarden in mongo-query's?

  4. MongoDB $weeklyUpdate #66 (22 april 2022):Hackathons, mongosh en Github