Как найти документ по наличию вложенного поля?

Строго говоря, элемент

является непустым / непустым элементом в HTML, т. е. он не предназначен для самостоятельного закрытия. Хотя
является действительным XHTML - из-за того, что /> указывает на самозакрывающийся (или пустой) XML-элемент - он интерпретируется обычными парсерами HTML и некоторыми валидаторами в качестве закрытого открывающего тега и поэтому недействителен HTML 4.01 и HTML5 .1

Фактически, запуск вашего данного фрагмента HTML через валидатор W3C (как HTML5) приводит к этому сообщению об ошибке:

синтаксис закрытия (/>), используемый для не-void HTML-элемента. Игнорирование косой черты и обработка в качестве начального тега.

Следовательно, что вы видите.


Из спецификации HTML5 (в первой ссылке):

Непустой элемент должен иметь конечный тег, если подраздел для этого элемента в разделе элементов HTML этой ссылки не указывает, что его конечный тег можно опустить.

После этого в подразделе для

элемента указано:

Элемент div должен иметь как начальный тег, так и конечный тег.

Это делает

в отличие от

или

  • , которые, как известно, не всегда требуют концевого тега.

    Если вы поместите

    сразу после незакрытого

    , он неявно закрывает предыдущий

    . Аналогично идет

  • . Это связано с тем, что вы не можете напрямую вставлять несколько абзацев или элементов списка вместе. Тем не менее,
    является гнездовым на любую глубину. Таким образом, тэг открытия
    не закрывает ранее нераскрытый тег
    .

    И именно поэтому вы видите, что видите.


    1 На настоящих страницах XHTML (сериализованных как XML, служащих как application/xhtml+xml), первый элемент

    будет не развернуть, чтобы обернуть второй элемент
    text
    . Вместо этого, как XHTML, он будет следовать правилам XML и содержать себя как пустой элемент, а не следовать правилам супа HTML-тегов и сам интерпретироваться как открывающий тег.

  • 0
    задан willis 27 February 2019 в 16:58
    поделиться

    1 ответ

    Да! Похоже, вы заботитесь о том, существует ключ или нет, поэтому вы захотите использовать оператор запроса $exist . Таким образом, запрос типа {"capitulos.Suministro e instalación.PRELIMINARES": {$exists: true}} должен найти ваш документ.

    Вы также можете использовать оператор запроса $type , если хотите проверить, действительно ли PRELIMINARES является объектом.

    0
    ответ дан willis 27 February 2019 в 16:58
    поделиться
    Другие вопросы по тегам:

    Похожие вопросы: