在發布此問題之前,我曾嘗試閱讀,但無法弄清楚。
我試圖從我的資料庫中的查詢中僅回傳與給定條件匹配的第一個元素。
收集檔案是這樣的:
{
"key": 1,
timestamps: {
history: [
{
time: 10
},
{
time: 9
},
{
time: 8
},
]
}
},
例如,我想檢索history陣列中timestamp小于10.
所以預期的結果應該是這樣的:
[
{
"timestamps": {
"history": [
{
"time": 9
}
]
}
}
]
你可以在這個操場https://mongoplayground.net/p/jHKb9o-0tHm 中找到一個例子。
到目前為止,我能夠檢索陣列中低于10但不僅是第一個匹配項的所有元素,我該如何實作?
此外,由于我試圖使其盡可能高效,僅檢索資料庫的第一個元素是否更快,或者它只是對資料庫執行的附加操作,因為僅回傳第一個元素的操作是在此之后完成的資料庫已經找到了所有元素?
uj5u.com熱心網友回復:
陣列欄位"timestamps.history"是一個嵌套欄位,使用$elemMatch投影運算子獲取第一個匹配元素失敗并顯示錯誤:"Cannot use $elemMatch projection on a nested field."。
在這種情況下,使用如下所示的位置投影運算子 $來獲得所需的結果。
db.collection.find(
{
key: 1, "timestamps.history.time": { $lt: 10 }
},
{
"timestamps.history.$": 1
}
)
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/399231.html
上一篇:MongoDB聚合中的總計
下一篇:C#mongo分頁與聚合
