gpt4 book ai didi

MongoDB 在数组内排序和限制

转载 作者:可可西里 更新时间:2023-11-01 10:33:08 24 4
gpt4 key购买 nike

我收集了这样的对话:

    [
{
title: ...,
members: [...],
messages: [
{ _id: ..., date: ..., text: ... },
{ _id: ..., date: ..., text: ... },
...
]
},
{
title: ...,
members: [...],
messages: []
},
...
]

一些文档有一个空的消息数组。我需要选择几个集合(对于一个用户),但有两件事:

1) The order of messages must be reversed (or messages must be ordered by date desc, result is the same).
2) The number of messages for each conversation must be limited.

我尝试使用此查询来撤消消息:

    db.conversations.aggregate([
{$match: {members: 'someUserId'}}
{$unwind: '$messages'},
{$sort: {'messages.date': -1}},
{$group: {
_id: '$_id',
title: {$first: '$title'},
members: {$first: '$members'},
messages: {$push: '$messages'}
}}
])

但是又出现了两个问题:没有消息的对话没有被选中,消息仍然没有被限制。

你有什么想法,如何解决?或者如何解决其中一个问题?谢谢!

最佳答案

当您将消息推送到文档数组时,可以结合使用排序和切片运算符:

http://docs.mongodb.org/manual/reference/operator/sort/ http://docs.mongodb.org/manual/reference/operator/slice/

它们分别使您的数组排序和受限。

关于MongoDB 在数组内排序和限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17758795/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com