我是mongo上的新用户,想获取聊天数据,让我解释一下。
我有一条消息集合:
_id:id
viewed:boolean
created_at:date
text:String
receiver:ObjectId
emitter:ObjectId
我希望按日期按特定发送者和接收者顺序的所有消息传递者列表(如普通聊天)
我尝试过这样的汇总:
db.messages.aggregate(
[
{
$lookup: {
from: "users",
localField: "emitter", // field in the orders collection
foreignField: "_id", // field in the items collection
as: "fromItems"
}
},
{
$match: {
'emitter':ObjectId("5c8917b4ef9ebf2e608c68dc")
}
}
,
{
$addFields: {
ids: { _id: "$_id" } ,
created: { created_at: "$created_at" }
}
},
{
$group:
{
_id: { tot:["$emitter", "$receiver"] },
text: { $addToSet:"$text"},
}
},
{
$sort: {created_at: 1}
}
]
)
但是,这仅给了我特定发射器的消息数组,而没有给我日期或查看的数据。 我在mongo和node上真的很新,所以如果有人可以帮助我进行解释将非常棒。
感谢阅读和对英语不好的抱怨
答案 0 :(得分:0)
您必须在$group
阶段添加日期或查看的数据。
尝试一下。
{
$group:
{
_id: { tot:["$emitter", "$receiver"] },
text: { $addToSet:{text:"$text",created:"$created.created_at"}},
created_at:{$last:"$created.created_at"}
}
},
为什么会有ids
并需要tot
字段和created
作为对象?