MongoDB C#驱动程序预测$ elemMatch $

时间:2017-03-17 17:57:09

标签: c# mongodb

我正在尝试将此查询从基于文本的过滤器转换为基于表达式。 查询部分没问题,但我在投影"state.transfer.attempts.$": 1时遇到了麻烦。

Project $的等效表达式是什么?

提前致谢

db.Items.find({
    "state.transfer.attempts": {
    "$elemMatch": {
          "entityId": 1,
          "state" : "failed"
        }
  }
},
{
  "state.transfer.attempts.$": 1
})

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中提到了相同的解决方案。

我试图在文档中找到这种行为的引用,但没有运气。