Предоставить способ указать порядок полей в $ project при использовании mongoDB - PullRequest
0 голосов
/ 09 января 2019

Я пытаюсь извлечь документы из БД Mongo на основе поля «Тип» с определенным порядком в результатах. Результаты извлекаются правильно, но результаты не сохраняют порядок полей, заданный в запросе.

Я включил приведенные ниже фрагменты рабочего кода. Может ли кто-нибудь помочь мне обновить эквивалентный код Java на основе моих фрагментов кода.

Mongo query is as below :- (Which retrieves data)
==========================================
    db.getCollection('elements').aggregate([
        {$match : {'Type' : {$eq : 'ALM_Project'}}},
        { $project:  {
            _id: 0,
            'ID' : 1,
            'Summary' : 1,
            'Created Date' : 1
          }},
        ])

Equivalent Java code is as below :-
==============================================================
 AggregateIterable<Document> documents = getMongoCollection()
        .aggregate(Arrays.asList(Aggregates.match(andQuery),
            Aggregates.project(Projections.fields(
                   Projections.include("ID", "Summary", "Created Date"),
                   Projections.exclude("_id")))));

Mongo query is as below :- (Added the fields preserving code)
===============================================================
db.getCollection('elements').aggregate([
{$match : {'Type' : {$eq : 'ALM_Project'}}},
{ $project:  {
    _id: 0,
    'ID' : 1,
    'Summary' : 1,
    'Created Date' : 1
  }},

 { "$project": {
        "ID": "$ID",
        "Summary": "$Summary",
        "Created Date": "$Created Date"
    }} 
])

Монго запрос работает отлично, сохраняя порядок полей. Может кто-нибудь, дайте мне знать, как я могу обновить Java-код на основе этого.

1 Ответ

0 голосов
/ 09 января 2019

Вы можете использовать MongoDB Compass для вывода кода Java из вашего конвейера. Вот пример кода.

Arrays.asList(match(eq("Type", "ALM_Project")), 
  project(fields(excludeId(), 
  include("ID", "Summary", "Created Date"))), 
  project(computed("ID", "$ID"), 
  computed("Summary", "$Summary"), 
  computed("Created Date", "$Created Date")))
...