【发布时间】:2021-12-28 22:11:31
【问题描述】:
在发布这个问题之前我已经尝试过阅读,但无法弄清楚。
我试图从我的数据库中的查询中仅返回与给定条件匹配的第一个元素。
集合文件是这样的:
{
"key": 1,
timestamps: {
history: [
{
time: 10
},
{
time: 9
},
{
time: 8
},
]
}
},
例如,我想检索history 数组中timestamp 低于10 的第一个元素。
所以预期的结果应该是这样的:
[
{
"timestamps": {
"history": [
{
"time": 9
}
]
}
}
]
你可以在这个操场上找到一个例子https://mongoplayground.net/p/jHKb9o-0tHm。
到目前为止,我能够检索到数组中低于10 的所有元素,但不仅是第一个匹配项,我该如何实现呢?
此外,由于我试图使其尽可能高效,因此仅检索数据库的第一个元素是否更快,或者它只是对数据库执行的附加操作,因为仅返回第一个元素的操作是在那之后数据库已经找到所有元素了吗?
【问题讨论】:
-
您可以使用$elemMatch (projection),它比聚合
$filter更简单简洁。 -
@prasad_ 谢谢,我试过了,因为你 sudjested mongoplayground.net/p/iXUDD31cDqO 但不幸的是它说我不能在嵌套数组上使用
$elemMatch