У меня есть chats
коллекция ведьма образец документа сMongoDB выбора вложенного документа на основе результата поиска родительского документа
{
"_id" : ObjectId("57f95e8e385bb61c5cf2cd18"),
//some other fields
"messages" : [
{
"sender" : "57ec1aaa0ffe16123439d52b",
"message" : "Hello!",
"sentTime" : "Oct 13, 2016 1:51:31 AM"
},
{
"sender" : "57ec1aaa0ffe16123439d52b",
"message" : "Hello!",
"sentTime" : "Oct 13, 2016 1:51:33 AM"
}
]
}
Я хочу найти свою коллекцию на основе _id
поля и только получить данные из messages sub-document
в качестве результата запроса с использованием java-драйвера для MongoDB, поскольку я хочу, чтобы Map to POJO-массив использовал Gson.
Желаемая Выход:
[
{
"sender" : "57ec1aaa0ffe16123439d52b",
"message" : "Hello!",
"sentTime" : "Oct 13, 2016 1:51:31 AM"
},
{
"sender" : "57ec1aaa0ffe16123439d52b",
"message" : "Hello!",
"sentTime" : "Oct 13, 2016 1:51:33 AM"
}
]
Как я могу идти с этим с помощью драйвера Java для MongoDB
Это не сработает. Он дает документ с полем поля id и сообщений в нем. Результат такой же, как и первый json, заданный в вопросе, за исключением всех остальных полей. Но мне нужно, чтобы это был только массив вспомогательных документов, как во втором json, который я поставил под вопрос. Спасибо – kritya
Невозможно получить только часть вспомогательного документа. Мы можем указать поля типа 'messages.sender', но не можем напрямую получить эту часть. Кроме того, вы не можете указывать поля include и exclude одновременно, и мы все равно вернем идентификатор. Так что это как можно ближе. –
Тогда возможно ли, что я могу сортировать массив сообщений на основе let say sentTime? – kritya