MongoDB - 使用不同的值查询输出更改

时间:2018-04-26 18:15:34

标签: arrays node.js mongodb mongoose mongodb-query

好吧所以我试图返回存储在数组中的单个对象。我正在使用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?

0 个答案:

没有答案