Javascript 基于条件查询MongoDB返回对象

Javascript 基于条件查询MongoDB返回对象,javascript,mongodb,Javascript,Mongodb,我正在创建一个非常基本的社交媒体应用程序,它还允许用户发布状态。数据库中的帖子模型有一个名为“private”的字段,该字段使帖子成为私有的,只有用户的朋友才能查看这些帖子 我有一个api端点,它有一个HTTP Get方法,我希望它能像这样工作: 返回请求用户的所有公共和私人帖子,但只返回其他用户的公共帖子 下面的代码实现了上述任务,但我正试图通过一个查询来完成 获取请求用户的所有帖子 constloggedinuserposts=wait Post.find({user:req.user.id

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

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

下面的代码实现了上述任务,但我正试图通过一个查询来完成

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

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


用户密钥是Post模型中的一个字段,其值等于相应用户的用户id的值。这实际上不可伸缩,因为随着社交应用程序的增长,您将返回大量不必要的帖子,但听起来您正在寻找
$或
操作符()

因此,类似这样的方法应该会奏效:

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

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

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

这是一种魅力。我确实理解这将带来的问题,因为将增加更多的职位。我只是在学习MongoDB,所以我想写一些简洁明了的代码,随着我的进步不断改进。非常感谢!