目前,我有以下查询,它返回与提供的查询匹配的对象数组。
const chats = await Chat.find({ _id: { $in: userChat.chatIds } })
结果是这样的:
[
{id: 1, name: 'Chat 1'},
{id: 2, name: 'Chat 2'},
{id: 3, name: 'Chat 3'},
]
我有以下代码将对象数组转换为包含嵌套对象的对象,其中
id
是每个对象的 key
chats.reduce((obj, item) => ((obj[item._id] = item), obj), {})
结果符合预期:
{
id1: {id: id1, name: 'chat1'},
id2: {id: id2, name 'chat2'}
}
我是否可以在不使用
reduce
方法并使用 mongoose 方法的情况下将我的数据转换为这种格式。我尝试将 aggregate
方法与 $arrayToObject
运算符一起使用,但无法获得我想要的结果。关于如何实现这一目标有什么想法吗?谢谢。
我认为这个聚合就是你想要的:https://mongoplayground.net/p/BU3jGQXVQtO