【发布时间】:2017-10-27 12:39:48
【问题描述】:
我有一个查询,它在 shell 中完美运行
db.getCollection('chatmessages').aggregate(
[
{
$match : {
ChatId: { $in : [ObjectId("59edf7d34330cf25d6acd3fb")] }
},
},
{
$group : {
_id : { ChatId : "$ChatId" },
LastMessage : { $first : "$$CURRENT"}
}
}
])
但是当我试图让它像这样在 c# 中工作时:
var list = await _mongoCollection.Aggregate()
.Match(mes => chatIdsObject.Contains(mes.ChatId))
.SortBy(mes => mes.ChatId)
.ThenByDescending(mes => mes.CreateDateTime)
.Group(
key => key.ChatId,
group => new
{
ChatId = group.Key,
LastMessage = group.Select(x => x).First()
})
.ToListAsync();
我收到一个错误:
$project 或 $group 不支持 {document}。
有没有办法让 $first 与 $$CURRENT 合作在 C# 中工作?
【问题讨论】:
-
尚不支持,另请参阅此 SO 问题:stackoverflow.com/questions/35386845/…