я получил несколько документов, как это:MongoDB: Получение документа и только один объект массива
{
"_id" : "sgG6G9XTvvjj7uxwQ",
"title" : "A title",
"notes" : [
{
"id" : "ePce6fBAHx9KeKjuM",
"timestamp" : 1453731403807,
"message" : "some text",
"name" : "Tom"
},
{
"id" : "BAHx9KeKjuMePce6f",
"timestamp" : 1453731403808,
"message" : "some text",
"name" : "Bob"
},
{
"id" : "ePce6fBAHx9KeKjuM",
"timestamp" : 1453731403809,
"message" : "some text",
"name" : "Tom"
}
]
}
Я получаю этот документ с помощью этого find
:-запросов
Collection.find({}, { sort: { title: 1 }});
Но я не» t необходимо полное поле notes
. Меня интересует только id
последнего объекта примечания. Это означает, что я должен заказать все объекты заметок по метке времени и просто взять первый (= самый новый).
Я не совсем уверен, могу ли я сделать это по запросу find
или если мне нужно сделать это после получения полных данных.
Так что лучший результат для меня будет:
{
"_id" : "sgG6G9XTvvjj7uxwQ",
"title" : "A title",
"notes" : [
{
"id" : "ePce6fBAHx9KeKjuM"
}
]
}
Это очень приятно. Думаю, мне нужно сохранить временную метку и заказать также временную метку. Как мне уменьшить карту на клиенте? – user3142695
Существует хорошее объяснение [Map-Reduce] (https://docs.mongodb.org/manual/core/map-reduce/) на веб-сайте MongoDB Docs [docs.mongodb.org/manual/core/map-reduce ] (https://docs.mongodb.org/manual/core/map-reduce/) –
Я нашел лучший способ сделать это с помощью [$ slice] (https://docs.mongodb.org/manual/ ссылка/оператор/проекция/срез /) проекция. Я обновил свой ответ. Я думаю, это правильно решает вашу проблему. Спасибо, что приняли мой ответ ;-) –