我有如下幾個檔案,我正在嘗試檢索在scores過去 24 小時內創建陣列第一個元素的檔案:
[
{
"id": 1,
"scores": [
{
"score": 1,
created_at: ISODate("2022-11-19T00:05:00.000 00:00")
},
{
"score": 2,
created_at: ISODate("2022-11-20T00:05:00.000 00:00")
}
]
},
{
"id": 2,
"scores": [
{
"score": 3,
created_at: ISODate("2022-11-20T00:05:00.000 00:00")
},
{
"score": 5,
created_at: ISODate("2022-11-20T00:05:00.000 00:00")
}
]
},
]
這是查詢:
db.collection.aggregate([
{
$match: {
$expr: {
$gte: [
"$scores.0.created_at",
{
$subtract: [
"$$NOW",
86400000
]
}
]
}
}
}
])
https://mongoplayground.net/p/L1jI10efWGL
但是,沒有回傳任何內容。有誰知道可能出了什么問題?
uj5u.com熱心網友回復:
不使用$scores.0.created_at,而是使用從陣列的第一個元素$getField獲取值。created_atscores
db.collection.aggregate([
{
$match: {
$expr: {
$gte: [
{
$getField: {
field: "created_at",
input: {
$first: "$scores"
}
}
},
{
$subtract: [
"$$NOW",
86400000
]
}
]
}
}
}
])
演示 @ Mongo 游樂場
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/537284.html
標籤:数据库mongodb查询
