Node.js Mongoose如何结合查找、排序和
我正在使用socket io编写聊天API。我在数据库中有以下数据结构。当用户A向用户B发送消息时,以下示例{“from”:“A”,“to”:“B”}保存的数据。当用户B响应时,结构如下{“from”:“B”,“to”:“A”} 我需要以某种方式从数据库中获取数据,对于用户A和用户B,并按时间对这些数据进行排序。我正试着用这种方式做这件事。可能会有这样一种情况:只有用户a到B的消息,即如果用户B没有响应Node.js Mongoose如何结合查找、排序和,node.js,mongodb,express,mongoose,Node.js,Mongodb,Express,Mongoose,我正在使用socket io编写聊天API。我在数据库中有以下数据结构。当用户A向用户B发送消息时,以下示例{“from”:“A”,“to”:“B”}保存的数据。当用户B响应时,结构如下{“from”:“B”,“to”:“A”} 我需要以某种方式从数据库中获取数据,对于用户A和用户B,并按时间对这些数据进行排序。我正试着用这种方式做这件事。可能会有这样一种情况:只有用户a到B的消息,即如果用户B没有响应 const messages = await Message.find( { $an
const messages = await Message.find( {
$and: [
{ from: { $eq: req.query.user } },
{ to: { $eq: req.user.name } },
{ from: { $eq: req.user.name } },
{ to: { $eq: req.query.user } }
],
sort:{
time: -1
}
})
您可以使用
$或运算符查找从“A”到“B”以及从“B”到“A”的消息
和sort
方法以降序获取消息
const messages = await Message
.find(
{
$or: [
{ from: { $eq: req.query.user }, to: { $eq: req.user.name } },
{ from: { $eq: req.user.name }, to: { $eq: req.query.user } },
],
},
)
.sort({time: 'descending'})
或者您可以使用查询选项
const messages = await Message
.find(
{
$or: [
{ from: { $eq: req.query.user }, to: { $eq: req.user.name } },
{ from: { $eq: req.user.name }, to: { $eq: req.query.user } },
],
},
null,
{ sort: { time: -1 } },
)
一切正常!非常感谢。
const messages = await Message
.find(
{
$or: [
{ from: { $eq: req.query.user }, to: { $eq: req.user.name } },
{ from: { $eq: req.user.name }, to: { $eq: req.query.user } },
],
},
null,
{ sort: { time: -1 } },
)