2017-03-17 146 views
1

我试图从基于文本的过滤器转换为基于表达式的查询。 查询部分是好的,但我在投影"state.transfer.attempts.$": 1有麻烦。

项目$的等效表达式是什么?

预先感谢

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

回答

1

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

我试过在文档中找到这种行为的参考,但没有运气。