Mongodb.find返回空数组[重复]

Posted

技术标签:

【中文标题】Mongodb.find返回空数组[重复]【英文标题】:Mongo DB.find returning empty array [duplicate] 【发布时间】:2021-06-22 19:47:11 【问题描述】:

我有这行代码

    const comments = await db.Comment.find(post: req.params.post_id);
    return res.status(200).json(comments);

请求已成功发送到后端,但 cmets 响应为空数组

/*
  res code: 200
*/


 comments: []

我检查了其他数据库功能,它们都可以正常工作,例如添加评论、编辑等

我的评论集是这样的

"_id":"$oid":"605d1faeb202e4425c004be9","text":"Welcome to this comment","user":"$oid":"5ff5d878dd830142686b7fd5","post":"$oid":"6016f770ea76030d24688f89","createdAt":"$date":"$numberLong":"1616715694247","updatedAt":"$date":"$numberLong":"1616715694247","__v":"$numberInt":"0"


--------------------------------------------------------
"_id":"$oid":"605d1fb8b202e4425c004bea","text":"Welcome to this comment2","user":"$oid":"5ff5d878dd830142686b7fd5","post":"$oid":"6016f770ea76030d24688f89","createdAt":"$date":"$numberLong":"1616715704381","updatedAt":"$date":"$numberLong":"1616715704381","__v":"$numberInt":"0"

我正在尝试按在我的评论收藏中保存为帖子的帖子 ID 进行搜索

【问题讨论】:

req.params.post_id 是一个字符串,post 字段是一个 ObjectId。见Mongoose String to ObjectID 【参考方案1】:

我认为您需要将 req.params.post_id 包装在 ObjectId 中。

像这样

const ObjectId = require('mongoose').Types.ObjectId;

const comments = await db.Comment.find(
   post: new ObjectId(req.params.post_id)
);

【讨论】:

Mongoose: comments.find( 'post.$oid': '6059444e21d546156cfce227' , projection: ) 还是不行 您是否遇到任何错误? 还是空数组? 返回了空数组 我认为您需要将 req.params.post_id 包装在 ObjectId 中。试试我更新的答案

以上是关于Mongodb.find返回空数组[重复]的主要内容,如果未能解决你的问题,请参考以下文章

MongoDB find() 使用 mongoose 返回空 - node.js [重复]

Mongodb find() 只包含非空数组

MongoDB $lookup 返回空数组[重复]

MongoDB $lookup 返回空数组[重复]

给定一个只包含正整数的非空数组,返回该数组中重复次数最多的前N个数字 ,返回的结果按重复次数从多到少降序排列(N不存在取值非法的情况)

php数据库空数组[重复]