如何使用model.findbyid并在其中查询?

时间:2018-10-19 11:47:48

标签: node.js mongodb mongoose

这对你们来说是一个简单的问题...我想知道在通过ID查询用户后,如何获取“跟随者”内部的特定ID。换句话说,我要通过其ID搜索用户,然后要检查关注者内部的ID。 例如:我在一个变量“ x”中保存了一个ID,并且我想检查此ID“ x”是否在followers数组内。

模型如下:

var UserSchema = new mongoose.Schema({
      followers: [
            {
                type: mongoose.Schema.Types.ObjectId,
                ref: 'User'
            }
        ]
    });
module.exports = mongoose.model("User", UserSchema);

我正在使用的代码是这样的:

User.findById(req.params.id,'followers', function(err,name){
      if(err){
        console.log(err)
      } else{
        console.log(name);
      }
    });

看起来我可以打印用户ID和“跟随者”内部的ID,但是我无法查看所需的ID是否在“跟随者”数组内。有人可以帮助我吗?

谢谢您的关注!

2 个答案:

答案 0 :(得分:0)

我认为您需要创建嵌套的for循环,因为您根据用户架构有一个用户数组,每个用户都有一个关注者数组,并且要解决此问题,您需要为用户架构创建for循环,并在该循环内部将遍历该用户内部的所有关注者,并检查您拥有的ID是否等于其ID。

答案 1 :(得分:0)

由于followers是ID数组(文档引用),因此,如果查询是针对单个追随者匹配项,则可以使用{followers: SOME_ID}的简写形式;如果查询是单个数组,则可以使用{ {1}}。有关更多信息,请参见Mongo documentation

例如,使用匹配的数组如下所示。

{followers: {$all: [SOME_ID, SOME_OTHER_ID]}}