我从mongodb和mongoose开始。这是我的数据库的样子
[
{
_id: "5fd0f98751e33831d8ef4899"
date: "01/01/2020, 11:47:00 AM"
groups: [
{
_id: "5fd0f98751e33831d8ef489a"
name: "Eyob"
profession: "doctor"
posts: [
{
_id: "5fd0f98751e33831d8ef489b"
numberOfLikes: 16
numberOfShares: "2 Shares"
},
{
_id: "5fd0f98751e33831d8ef489c"
numberOfLikes: 26
numberOfShares: "7 Shares"
}
]
},
{
_id: "5fd0f98751e33831d8ef489d"
name: "Abel"
profession: "teacher"
posts: [
{
_id: "5fd0f98751e33831d8ef489e"
numberOfLikes: 16
numberOfShares: "2 Shares"
},
{
_id: "5fd0f98751e33831d8ef489f"
numberOfLikes: 26
numberOfShares: "7 Shares"
}
]
}
]
},
{
_id: "5fd0f98751e33831d8ef489d"
date: "01/02/2020, 11:47:00 AM"
groups: [// an array of groups as the above one //]
}
]
因此,对于每个groups数组,都有一个group对象,其中包含一个posts数组,其中包含一个post对象。(“这可能会令人困惑”)。我想要做的是使用唯一的ID查询单个帖子以及单个群组。findById()
返回null。有没有一种方法可以使用相应的ID来查询此对象。
试试这个,它应该可以解决您的问题。
(发送一个帖子_id
以获取您的期望数据)
const {id}=req.params;
YourDataModel.findOne({"groups.posts._id":id}, {"groups.posts._id.$":true})
.then(data=>data?res.send({
groupId:data.groups[0]._id,
groupName:data.groups[0].name,
post:data.groups[0].posts.filter(e=>e._id===id)[0]
}): res.send("Not found!"))
.catch(err=>res.send(err))
您还可以使用相同的代码获取该组的所有帖子(与该帖子相关),只需res.send(data)
在必要时进行或进行必要的修改即可。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句