I try to count unread messages for a user. On
On my model i, I have a property, LastMessageDateLastMessageDate that contains the date on the last created message in the group chat. I have also a Members propeerty Members property (list) that contains the members in the group chat. Each member has a UserIdthe UserId and LastReadDate propertyLastReadDate properties. The LastReadDateLastReadDate is updated when the user writewrites a new message in the group chat or when the user loads messages from the group chat.
Now iI want to count the number of chats where a specific user has unreadedunread messages (The messages isare 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);
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 iI 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 iI do? Is there a better solution?