【问题标题】:How do I query in MongoDB on a field after modifications修改后如何在 MongoDB 中查询字段
【发布时间】:2021-06-13 14:18:32
【问题描述】:

我想知道为什么即使 '$lte' 表达式为真,这个查询也不返回任何内容:

db.collection.find({"timestamp": {"$lte": ["$timestamp",new Date()] }})

我知道正确的做法是:

db.collection.find({"timestamp": {"$lte": new Date()}})

但我很好奇为什么它不起作用?

【问题讨论】:

  • 您的第一次尝试将不起作用,因为$let: [] 是表达式语法,您可以将它与$expr 运算符一起使用,您的第二次尝试是正确的语法,如果它不起作用请显示一些示例数据您在timestamp 字段中拥有的。

标签: mongodb mongodb-query


【解决方案1】:

根据 MongoDB $expr 的文档,可以构建查询表达式,在 $match 阶段比较来自同一文档的字段

在您的第一个查询中,您将时间戳与某个值(即当前时间戳)进行比较,它应该写在下面,并且由于表达式语法 "$lte":[] 它应该使用 $expr 为:

db.collection.find({"$expr": {"$lte": ["$timestamp",new Date()] }})

第二个查询和往常一样,它应该可以正常工作。

【讨论】:

    猜你喜欢
    • 2019-01-03
    • 2012-02-19
    • 2021-10-09
    • 1970-01-01
    • 1970-01-01
    • 2018-01-18
    • 1970-01-01
    相关资源
    最近更新 更多