查询MongoDB根据条件返回对象

时间:2021-05-24 11:13:35

标签: javascript mongodb

我正在创建一个非常基本的社交媒体应用程序,它还允许用户发布状态。数据库中的 Post 模型有一个名为“private”的字段,它将帖子设为私有,只有用户的朋友才能查看。

我有一个 api 端点,它有一个 HTTP Get 方法,我希望它像这样工作: 返回请求用户的所有公开和私人帖子,但仅返回其他用户的公开帖子。

以下代码实现了上述任务,但我试图通过单个查询来完成。

获取请求用户的所有帖子 const loggedInUserPosts = await Post.find({ user: req.user.id }).sort({ date: -1 });

仅获取其他用户的公开帖子 const otherUserPosts = await Post.find({ user: { $ne: req.user.id }, private: false }).sort({ date: -1 });

user 键是 Post 模型中的一个字段,其值等于相应用户的任何用户 ID

2 个答案:

答案 0 :(得分:0)

这并没有真正扩展,因为随着社交应用的发展,您本质上会返回许多不必要的帖子,但听起来您正在寻找 $or 运算符({{3 }})

所以,这样的事情应该可行:

await Post.find( { $or: [ { user: req.user.id }, { user: { $ne: req.user.id }, private: false } ] } ).sort( { date: -1 } )

答案 1 :(得分:0)

应用 OR 条件查找属于该用户的帖子或其他用户的所有公开帖子

query={ 
  $or:[
      { user: req.user.Id },
      { user: { $ne: req.user.Id }, private: false }
  ]
}
Post.find(query)