sql >> Databasteknik >  >> NoSQL >> MongoDB

Hitta poster med fält i ett kapslat dokument när överordnade fält inte är kända

För att söka efter en nyckel i kapslade dokument måste du iterera dokumentfälten rekursivt, du kan göra detta i JavaScript med hjälp av $where metod i MongoDBFrågan nedan kommer att söka om ett nyckelnamn finns i ett dokument och dess underdokument.

Jag har kontrollerat detta med exemplet du har gett, och det fungerar utmärkt.

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:Summan av SCORES i sorterad uppsättning

  2. tar bort dubbletter av arrayvärden från mongodb

  3. MongoDB estimatedDocumentCount()

  4. Få antalet fält i varje dokument genom fråga med MongoDB java-drivrutin