Другой способ использования запроса агрегирования применим только для версии MongoDB> 3.4 -
. Благодарим вас за это сообщение .
Примеры документов для выбирается в этом порядке -
var order = [ "David", "Charlie", "Tess" ];
Запрос -
var query = [
{$match: {name: {$in: order}}},
{$addFields: {"__order": {$indexOfArray: [order, "$name" ]}}},
{$sort: {"__order": 1}}
];
var result = db.users.aggregate(query);
Еще одна цитата из сообщения, объясняющая эти операторы агрегирования -
Этап «$ addFields» является новым в версии 3.4 и позволяет вам «создавать» новые поля для существующих документов, не зная всех других существующих полей. Новое выражение «$ indexOfArray» возвращает позицию определенного элемента в заданном массиве.
blockquote>В основном оператор
addToSet
добавляет новое полеorder
в каждый документ, когда он его находит, и это Полеorder
представляет собой первоначальный порядок нашего массива, который мы предоставили. Затем мы просто сортируем документы на основе этого поля.
Ответы на основе "синтаксиса тверды", не никакой ответ вообще, по моему скромному мнению. A). Это действительно не и B). Вы, как предполагается, являетесь программистом, просто изучаете это.
Определенно другие технологии совершенствуются в темпе, который не имеет XSLT, с тех пор 2005ish, но это остается мощным инструментом, который дает Вам уровень абстракции, которую, скажем, не делают веб-формы asp.net, и позволяет Вам предоставлять общее масштабируемое решение для тривиальной сериализации к диапазону выходных форматов. Легко генерировать HTML с любым данным языком, более трудно теперь расширить это до XML, теперь расширить это до JSON, теперь расширить это до CSV.
И кэшируемый преобразовывает, много достаточно быстро в среде, которая является все еще связанным вводом-выводом.
OTOH, храня данные в XML обычно являются не хорошей идеей. Намного лучше сохранить в DB/мадам и сериализировать как требуется по всем причинам выше.
Смотрите на http://www.umbraco.org/ , Это - свободный инструмент CMS с открытым исходным кодом, который использует XSLT экстенсивно для генерации страниц.
Ко всем те, кто требует XSLT, тверды, я сказал бы, что это не тяжелее, чем SQL. Существует сценарий, которые являются тверды, такие как группировка, точно так же, как в SQL деревья тверды.
Выбор правильный инструмент для правильного задания и у Вас не должно быть проблем.
Походит на плохую идею мне. Намного легче использовать что-то как ASP.NET с содержанием, сохраненным в базе данных - можно затем обновить содержание непосредственно в базу данных - который сам по себе будет легче, чем редактирование XML.
То, что вы описываете, уже существует и является Apache Cocoon: http://cocoon.apache.org/
Я знаю немного больших веб-порталов, которые работают с помощью XSLT много, здесь в Польше. Они использовали, потому что это может минимизировать объем данных, отправленный по сети.
я также работал над проектом (Огромное приложение HRM), и мы использовали его там для преобразования нашего языка программирования к.NET.
я сказал бы, что это иногда очень полезно.
XSLT является всего одним методом шаблонной обработки. Это - также всего одна часть полной платформы MVC, где, обрабатывая быть по шаблону Компонентом представления. XSLT является большой технологией, но это медленно и не предпочтительный вариант при создании масштабируемого веб-сайта.
Исследование в области платформ MVC для наблюдения, какой соответствует Вам лучше всего. например, ASP.NET MVC, Ruby on Rails, CakePHP, Катализатор, и т.д.
На работе проект я нахожусь на использовании XSLT и честно говоря, это - реальная боль. Фактические файлы XSLT не являются настолько трудными работать с, но имеющий необходимость создать XML добавляет дополнительный слой сложности. Я также нашел, что вне самых основных страниц, XML имеет тенденцию становиться очень чрезмерно увеличенным в размерах и грязным. Так, нет, я не рекомендовал бы это.
Назад в 2002-2003 я сделал много с XSLT (и еще многие в 2006-2007). Ваш пробег на этом будет варьироваться, но честно я избежал бы его по нескольким причинам:
единственное место я могу действительно видеть, что наличие приложения для XSLT в эти дни находится в потреблении веб-сервисов, которые производят XML (партии производят JSON и более легко использованные форматы в эти дни).
И даже в этом случае я, вероятно, все еще управлял бы XML непосредственно с, скажем, JAXB в Java (или подобные технологии на других языках).
Обновление: я просто столкнулся Смерть XSLT в веб-Платформах . Например:
, Например: как скрыть строку в таблице (использующий другой стиль CSS), на основе некоторого УСЛОВИЯ, с XSLT? См.:
<tr> <xsl:attribute name="style"> <xsl:choose> <xsl:when test="CONDITION"> <xsl:value-of select="'visibility: visible'"> </xsl:when> <xsl:otherwise> <xsl:value-of select="'visibility: collapse'"> </xsl:otherwise> </xsl:choose> </xsl:attribute> ... </tr>
и теперь то же с JSP 1.x:
<tr style='visibility:<%=CONDITION ? "collapse" : "visible"%>'> ... </tr>
или с JSP 2.x:
<tr style='visibility:${CONDITION ? "collapse" : "visible"}'> ... </tr>
полученный в итоге:
Поэтому при запуске нового проекта думайте дважды (или десять раз) перед вскакиванием в XSLT. И> при использовании Eclipse можно даже думать дважды перед использованием JSP/JSTL. Скорость или> FreeMarker могла бы быть более оптимальным вариантом.
Мне нравится идея. XSL является фантастическим инструментом, но Вы должны иметь в тот особый момент просвещения перед пониманием, насколько полезный это действительно. Перед этим это просто кажется так себе.
Я использовал XSL во множестве приложений, и он сохранил меня много времени. Но, очевидно, не просто используйте его ради него.
я хочу сделать это, чтобы помочь обновить сайт с помощью простых XML-файлов (вместо того, чтобы использовать законченный & дорогая система CMS).
Er, что? Существуют многие свободный и CMSs с открытым исходным кодом.
, Какой spoulson, сказанный выше о шаблонной обработке, является точкой. Обеспечение выходных страниц от входных XML-файлов прекрасно. Но это не получает Вас CMS. Что относительно C.R.U.D.? Поиск? Списки страниц?
, Если Ваш сайт является столь небольшим, что все соответствующее обновление может быть сделано Вами редактирование руки некоторые XML-файлы, затем почему не, пойдите для него. Но если случается так, что простой Вы могли бы также просто отредактировать HTML вручную.
Если ваша платформа имеет проверку ASP.NET MyXSL
XSLT дает вам возможность делать ненавязчивую шаблоку, что является IMO Ultimate Chyllating.
В качестве примера, wowarmory.com является хорошим примером сайта с высоким трафиком, использующего XSLT. На самом деле, я думаю, что весь сайт использует его.
xslt - это сложно?
Это работа программиста - решать сложные проблемы и сложные стандарты. Есть вещи, которые намного сложнее, но все равно нужны. Просто продолжайте в том же духе, и с каждым разом вам будет все легче и легче изучать новый материал.
Xslt - это просто.
Правда! Есть хорошие книги, которые научат вас xslt. Просто выучите, например, rdf/owl (стандарт w3c), и он может стать намного сложнее...
xslt медленный? Просто используйте правильное кэширование, если можете. (хорошо, это не всегда возможно...).
Просто почитайте о REST (в какой-нибудь книге или диссертации Роя Филдинга) - это тоже очень важно.
Теперь с XProc (xslt piplines) и небольшим рестсервером вокруг calabash (реализация Xproc) вы можете архивировать так много. Это определенно может сэкономить вам время. Любые данные могут быть экспортированы в XML, сделаны доступными через REST и преобразованы с помощью XProc.
Symphony CMS использует XSLT. При использовании этой CMS я обнаружил, что единственные реальные проблемы, с которыми я столкнулся, были связаны с изучением синтаксиса XSL/XPath, в основном из-за отсутствия хороших учебников/документации. Возможно, стоит попробовать Symphony, если вы хотите увидеть относительно современное использование XSLT.