Мне нужно получить последний документ в коллекции (здесь есть уведомления) для каждого пользователя и удалить другой. Давайте предположим, у меня есть данные, как это:Как получить последние документы в коллекции и удалить другие
[
{ user: 1, time: ISODate("Mon, 14 Sep 2015 06:22:36 +0000"), msg: "message" },
{ user: 1, time: ISODate("Tue, 15 Sep 2015 06:22:36 +0000"), msg: "message" },
{ user: 1, time: ISODate("Fri, 23 Sep 2015 06:22:36 +0000"), msg: "message" },
{ user: 2, time: ISODate("Tue, 27 Sep 2015 06:22:36 +0000"), msg: "message" },
{ user: 2, time: ISODate("Wed, 28 Sep 2015 06:22:36 +0000"), msg: "message" },
{ user: 2, time: ISODate("Wed, 28 Sep 2015 07:33:16 +0000"), msg: "message" }
]
Например, Я хочу, чтобы получить последние 2 уведомления и удаления другого, так что результат для user 1
должен быть:
[
{ user: 1, time: ISODate("Tue, 15 Sep 2015 06:22:36 +0000"), msg: "message" },
{ user: 1, time: ISODate("Fri, 23 Sep 2015 06:22:36 +0000"), msg: "message" }
]
И данные будут как это:
[
{ user: 1, time: ISODate("Tue, 15 Sep 2015 06:22:36 +0000"), msg: "message" },
{ user: 1, time: ISODate("Fri, 23 Sep 2015 06:22:36 +0000"), msg: "message" },
{ user: 2, time: ISODate("Tue, 27 Sep 2015 06:22:36 +0000"), msg: "message" },
{ user: 2, time: ISODate("Wed, 28 Sep 2015 06:22:36 +0000"), msg: "message" },
{ user: 2, time: ISODate("Wed, 28 Sep 2015 07:33:16 +0000"), msg: "message" }
]
и другие записи, которые относятся к user 1
, будут удалены. Итак, каков эффективный способ сделать это?
Если я понимаю, что вы хотите обновить документы в своей коллекции и оставить только последние два для каждого пользователя. правильно? – styvane
@ пользователь3100115 да, эта. – windyzboy