使用猫鼬按引用表的属性搜索

时间:2019-03-14 15:13:12

标签: node.js mongodb mongoose

好的,我得到了这个用户模式

const UserSchema = new mongoose.Schema({
  name: String,
  email: String,
  password: String
});

这是一个标记,如您所见,标记知道它是用户

const MarkSchema = new mongoose.Schema({
  lat: {
    type: SchemaTypes.Double
  },
  lng: {
    type: SchemaTypes.Double
  },
  user: {
    type: ObjectId,
    ref: "User"
  }
});

我需要通过一个查询来了解Markers的{​​{1}}到User的{​​{1}} 而且我无法过滤填充内容,因为它不是联接。

所以有人有主意吗?

2 个答案:

答案 0 :(得分:2)

//With One query, you need to go through all the records in Marks Schema.  

//get the name from the request body
const Search_name = req.body.name;


MarkSchema.find({}).populate("user").exec((err,marks)=>{
     if(err){ 
        //handle
     }
     else{
        const filteredMark = marks.filter((mark)=>{
           return mark.user.name === Search_name
        })

        //console.log(filteredMark[0])

     }
});

答案 1 :(得分:1)

您需要两个查询。一个用于用户(实际上是用户标识),然后另一个用于标记。没办法。

您应该可以将ID方便地保存在某个地方,例如在会话中吗?