Есть ли способ убедиться, что MongoDB всегда упорядочивает объекты в массиве в определенном порядке? - PullRequest
0 голосов
/ 21 июня 2020

Я использую MongoDB через mon goose. Есть ли способ убедиться, что MongoDB всегда упорядочивает объекты в массиве в определенном порядке?

Рассмотрим код схемы ниже:

{
    _id: '1234',
    arrayOfObjects:[{
        data:'some data'
        createdAt:'some date'      
    }]
}

Я хочу создать материализованное представление, чтобы объекты можно было вставлять в случайном порядке, а не в порядке их дат создания. Есть ли способ убедиться, что MongoDB всегда упорядочивает объекты в массиве в определенном порядке? Или мне нужно это делать при запросе?

1 Ответ

1 голос
/ 21 июня 2020

да, вы можете использовать оператор $ sort: подробнее здесь

быстрый пример:

образец схемы:

{
  "_id": 1,
  "arrayField": [
    { "id" : 1, "someNumber" : 6 },
    { "id" : 2, "someNumber" : 9 }
  ]
}

Запрос образец; Сортировка arrayField по someNumber в порядке возрастания будет выглядеть так:

update.(
   { _id: 1 },
   {
     $push: {
       arrayField: {
         $each: [ { id: 3, someNumber: 8 }, { id: 4, someNumber: 7 }, { id: 5, someNumber: 6 } ],
         $sort: { someNumber: 1 }
       }
     }
   }
)
...