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

时间:2018-03-09 23:18:27

标签: javascript mongodb mongoose-schema

我正在使用mongoose 4.13.11并且我试图在数组中找到'last_message_read.messageId'不等于'last_message字段'的元素。这是我正在使用的架构:

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。例如,我不确定我是否可以加入&&操作和报价中的user_id。

任何关于如何执行此类查询的想法都会很棒。感谢。

0 个答案:

没有答案