Javascript 当数组中的元素与该模式中的另一个字段不匹配时,如何查找对象?

Javascript 当数组中的元素与该模式中的另一个字段不匹配时,如何查找对象?,javascript,mongodb,mongoose-schema,Javascript,Mongodb,Mongoose Schema,我正在使用mongoose 4.13.11,并试图在数组中查找“last_message_read.messageId”不等于“last_message field”的元素。以下是我正在使用的模式: conversationSchema = new Schema{( last_message: {type: Schema.Types.ObjectId, ref: "Message"}, members: [{ type: Schema.Types.ObjectId, r

我正在使用mongoose 4.13.11,并试图在数组中查找“last_message_read.messageId”不等于“last_message field”的元素。以下是我正在使用的模式:

conversationSchema = new Schema{(
 last_message: {type: Schema.Types.ObjectId, ref: "Message"},
    members: [{
    type: Schema.Types.ObjectId,
    ref: "User"
    }],
 last_message_read: [{
    user_id: {type: Schema.Types.ObjectId, ref: 'User'},
    message: {type: Schema.Types.ObjectId, ref: "Message"}
  }], 
)}
这是我尝试的查询:

const user_id = ObjectId();
conversationModel.find(
            {members: user_id},
            { $expr: { $where : "this.last_message != this.last_message_read.$.message && this.last_message_read.$.user_id == user_id"} },
            function(err, conversations){})
但问题是,我在文档中找不到任何允许查询的地方,我得到的最接近的结果是使用$expr和$where。例如,我不确定是否可以在报价中包含&&操作或用户id

任何关于如何执行这种类型查询的想法都将非常好。谢谢