Ral*_*ton 1 mongodb mongodb-query
给定添加到集合“样本”中的文档,如下所示:
db.sample.insert({"activeOn":ISODate("2000-01-01")})
Run Code Online (Sandbox Code Playgroud)
我认为我应该能够将该文档与以下聚合相匹配
db.sample.aggregate([{"$match":{"activeOn":{"$lte":"$$NOW"}}}])
Run Code Online (Sandbox Code Playgroud)
但没有找到任何文件。我正在使用 MongoDB 版本 4.2.3
在 $match 块中使用 $$NOW 系统变量我错过了什么?
从$match文档:
$match 查询语法与读操作查询语法相同;即 $match 不接受原始聚合表达式。要在 $match 中包含聚合表达式,请使用 $expr 查询表达式:
是$$ NOW一个生聚集的表达?是的,因为它是一个系统变量:
表达式可以包括字段路径、文字、系统变量、表达式对象和表达式运算符。表达式可以嵌套。
所以我们所要做的就是像这样使用$expr:
db.sample.aggregate([
{
"$match": {
$expr: {
$lte: [
"$activeOn",
"$$NOW"
]
}
}
}
])
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
162 次 |
| 最近记录: |