Как получить последние N документов из вложенного массива в MongoDB? ⇐ Php
-
Гость
Как получить последние N документов из вложенного массива в MongoDB?
Исходный документ «чат». Сообщения, хранящиеся в массиве «messages»:
{ "_id": ObjectId("65d64029a16e5d5a9d00f1e6"), "name" : "Чат без названия", "Сообщения" : [ { "_id": ObjectId("65dfbba726752480ef0c4167"), "текст" : "сообщение 1" }, { "_id": ObjectId("65dfbba726752480ef0c4167"), "текст" : "сообщение 2" } ]} Я пытаюсь получить последние N сообщений из этого массива. Я также хочу применить параметры ограничить и пропустить.
Изначально я использовал отдельный сбор сообщений. И мой вопрос был:
$cursor = $DB->messages->find( ['_id' => новый MongoDB\BSON\ObjectID($cid)], ['sort' => ['_id' => -1], 'limit' => $limit, 'skip' => $skip] ); После нескольких попыток использования различных вариантов агрегата() и find() я так и не нашел решения.
Язык — PHP. Драйвер MongoDB + Атлас MongoDB.
Исходный документ «чат». Сообщения, хранящиеся в массиве «messages»:
{ "_id": ObjectId("65d64029a16e5d5a9d00f1e6"), "name" : "Чат без названия", "Сообщения" : [ { "_id": ObjectId("65dfbba726752480ef0c4167"), "текст" : "сообщение 1" }, { "_id": ObjectId("65dfbba726752480ef0c4167"), "текст" : "сообщение 2" } ]} Я пытаюсь получить последние N сообщений из этого массива. Я также хочу применить параметры ограничить и пропустить.
Изначально я использовал отдельный сбор сообщений. И мой вопрос был:
$cursor = $DB->messages->find( ['_id' => новый MongoDB\BSON\ObjectID($cid)], ['sort' => ['_id' => -1], 'limit' => $limit, 'skip' => $skip] ); После нескольких попыток использования различных вариантов агрегата() и find() я так и не нашел решения.
Язык — PHP. Драйвер MongoDB + Атлас MongoDB.
Мобильная версия