I try to count unread messages for a user. On my model i have a property, LastMessageDate that contains the date on the last created message in the group chat. I have also a Members propeerty (list) that contains the members in the group chat. Each member has a UserId and LastReadDate property. The LastReadDate is updated when the user write a new message in the group chat or when the user loads messages from the group chat.
Now i want to count the number of chats where a specific user has unreaded messages (The messages is stored in another collection). I try this:
var db = GetGroupCollection();
var filter = Builders<ChatGroup>.Filter.Where(p => p.Members.Any(m => m.UserId == userId && m.LastReadDate < p.LastMessageDate));
return await db.CountDocumentsAsync(filter);
But i receive the following error:
The LINQ expression: {document}{Members}.Where((({document}{UserId} == 730ddbc7-5d03-4060-b9ef-2913d0b1d7db) AndAlso ({document}{LastReadDate} < {document}{LastMessageDate}))) has the member "p" which can not be used to build a correct MongoDB query.
What should i do? Is there a better solution?