我正在使用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。
任何关于如何执行此类查询的想法都会很棒。感谢。