好吧所以我试图返回存储在数组中的单个对象。我正在使用req.params从DB获取信息,这里有一些工作代码:
router
.route("/book-review/:book")
.get((req, res) => {
return model.findById(req.user.id).select({
'posts': {
$elemMatch: {
"title": req.params.book
}
}
})
这个回归:
{
_id: 5ae1be4c48c5360c5457da48,
posts: [
{
i: 5ae21180bb811e1a453317f0,
title: 'cc',
chapters: []
}
]
}
这完全返回我想要它返回存储在post数组中的单个对象但是因为url(当使用title时)可能与另一个帖子标题具有相同的值这是一个问题,我想使用ObjectID(我有设置)
router
.route("/book-review/:book")
.get((req, res) => {
return model.findById(req.user.id).select({
'posts': {
$elemMatch: {
"i": req.params.book
}
}
})
当我将它从“title”更改为“i”(这个存储个别帖子id)时,它会返回一个完全不同的值,这个值只返回:
{
_id: 5ae1be4c48c5360c5457da48
}
(这是使用标题时可以看到的父ObjectId)
有人可以解释一下这里有什么用,以及如何在不使用标题的情况下获得第一个结果而不是使用id?