我正在尝试将此查询从基于文本的过滤器转换为基于表达式。
查询部分没问题,但我在投影"state.transfer.attempts.$": 1
时遇到了麻烦。
Project $
的等效表达式是什么?
提前致谢
db.Items.find({
"state.transfer.attempts": {
"$elemMatch": {
"entityId": 1,
"state" : "failed"
}
}
},
{
"state.transfer.attempts.$": 1
})
答案 0 :(得分:2)
根据this blog post,位置运算符是通过寻址-1th
- 元素实现的:
Builders<State>.Projection.Include(state => state.transfer.attempts[-1])
或
Builders<State>.Projection.Include(state => state.transfer.attempts.ElementAt(-1));
this SO answer中提到了相同的解决方案。
我试图在文档中找到这种行为的引用,但没有运气。