2017-03-17 137 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中提到了相同的解決方案。

我試過在文檔中找到這種行爲的參考,但沒有運氣。