Node.js mongoose在一个字段中处理两个ref ObjectID,以获取ObjectID的每个集合
我对mongoose和RESTAPI非常陌生,检索每个集合引用另一个文档时遇到问题 所有这些模式都经过了编辑,以便于阅读,因为实际情况下,我有更多的字段,我认为不需要显示 我有一个Node.js mongoose在一个字段中处理两个ref ObjectID,以获取ObjectID的每个集合,node.js,mongodb,express,mongoose,aggregation-framework,Node.js,Mongodb,Express,Mongoose,Aggregation Framework,我对mongoose和RESTAPI非常陌生,检索每个集合引用另一个文档时遇到问题 所有这些模式都经过了编辑,以便于阅读,因为实际情况下,我有更多的字段,我认为不需要显示 我有一个用户模式数据,如下所示: { "_id": "123" "username": "Paijo", "email": "paijo@gmail.com" } { &quo
用户模式
数据,如下所示:
{
"_id": "123"
"username": "Paijo",
"email": "paijo@gmail.com"
}
{
"_id": "345"
"username": "Flix",
"email": "Flix@gmail.com"
}
{
"_id": "5f525b2ac1267e868e882fbc",
"roomId": "123_345",
"latestMessage": "Bisa lahh cujkkkk",
"updatedAt": {
"$date": "2020-09-05T07:00:27.846Z"
},
"createdAt": {
"$date": "2020-09-04T15:20:10.840Z"
}
}
我有这样的消息模式数据:
{
"_id": "123"
"username": "Paijo",
"email": "paijo@gmail.com"
}
{
"_id": "345"
"username": "Flix",
"email": "Flix@gmail.com"
}
{
"_id": "5f525b2ac1267e868e882fbc",
"roomId": "123_345",
"latestMessage": "Bisa lahh cujkkkk",
"updatedAt": {
"$date": "2020-09-05T07:00:27.846Z"
},
"createdAt": {
"$date": "2020-09-04T15:20:10.840Z"
}
}
我想查询roomId
中是否有一些user\id
,并检索user schema
和message schema
的所有字段
假设我是用用户id
123登录的,我想在roomId
和345
的详细用户中获取包含123的消息
我希望获取的预期结果是:
{
"_id": "5f525b2ac1267e868e882fbc",
"roomId": "123_345",
"latestMessage": "Bisa lahh cujkkkk",
"updatedAt": {
"$date": "2020-09-05T07:00:27.846Z"
},
"createdAt": {
"$date": "2020-09-04T15:20:10.840Z"
},
"username": "Flix", // get result from user schema which has _id 345
"email": "Flix@gmail.com" // get result from user schema which has _id 345
}
目前,我只能通过此查询获取包含用户登录的\u id
的所有消息,但我不知道如何在roomId
exports.listChat = async (req, res)=>{
const userID = req.userID
const listChat = await ChatRoom.find({roomId: new RegExp(userID)}).select("-message")
console.log('listChat' , listChat)
res.send(listChat)
}
您可以从使用和定义两个独立的子字段开始:me
(当前用户)和other
——您要使用的值
关于您的查询,是否需要$project
?我的意思是,我想显示所有字段,而不是定义每个字段field@flix不,这只是为了摆脱嵌套的子文档,但您不需要它