我只想通過使用“find”函式而不使用“aggregate”從檔案中的陣列中檢索第一個和最后一個元素。
這是一個 Mongo Playground 鏈接
考慮一個檔案
{
_id:"1",
messages:[
{
"text":"First item",
},
{
"text":"Middle item",
},
{
"text":"Last item",
},
],
}
到目前為止,我只能檢索第一個或最后一個,例如,獲取最后一個專案,我正在做:
messages: {
$slice: ["$messages", -1], //Get the last element
},
如何同時獲得第一個(第 0 個索引)和最后一個(第 n 個索引)?
注意:我沒有任何關于陣列長度的資訊。
注 2:我不想使用“聚合”的原因是因為有更多的過濾器、選擇、限制和其他各種查詢屬性正在通過 mongoose 的 find()、limit() 等函式處理,我就是以通用方式使用來定義我的包裝器。
uj5u.com熱心網友回復:
如果您想要這兩個值,請使用如下投影列出它們:
{
messages: [
{$slice: ["$messages", 1]},
{$slice: ["$messages",-1],}
],
}
uj5u.com熱心網友回復:
使用聚合,您可以像這樣使用$first和$last:
db.collection.aggregate([
{
"$project": {
"first": {
"$first": "$messages"
},
"last": {
"$last": "$messages"
}
}
}
])
示例在這里
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/348838.html
標籤:MongoDB 猫鼬 mongodb-查询
下一篇:按日期對多個集合中的檔案進行分組
