【问题标题】:MongoDB find() query in expressjs returning an empty result on second runexpressjs 中的 MongoDB find() 查询在第二次运行时返回空结果
【发布时间】:2019-03-12 10:02:09
【问题描述】:

我遇到以下问题:

我有一个快速服务器,用作我正在构建的网站的后端/“API”。

我的路线 /weekly 支持 2 个参数:开始时间和结束时间

如果没有给定参数,我会在晚上 11.59 和前 3 周的凌晨 1 点生成当天的 unix 时间戳

使用这 2 个时间戳和我运行此函数的数据库对象:

weeklyimport: async function (db_payload, start, ende) {
db = db_payload
let callection = await db.collection('History').find({$and: [
    {"datumUnix": {$gt: start}}, {"datumUnix": {$lt: ende}}, {"status": 4}, {"bereich": {$ne: "Akquise"}}, {"bereich": {$ne: "Entwicklung"}}, {"bereich": {$ne: "Gewinnung"}}
    ]}).toArray()
return callection
}

在第一次加载页面时,我调用不带参数的页面来获取 21 天时间跨度的数据。第一个查询(不带参数)的开始和结束的 Console.log 显示开始为 1550530800,结束为 1552382360。此查询返回约 6800 个结果。 将时间范围更改为相同的开始和结束(这次只是手动而不是自动)后,开始和结束分别更改为 1550530800 和 1552431599。然而这次我得到一个空数组作为返回值和 0 个结果。

当我跑步时

db.getCollection('History').find({$and: [
        {"datumUnix": {$gt: 1550530800}}, {"datumUnix": {$lt: 1552431599}}, {"status": 4}, {"bereich": {$ne: "Akquise"}}, {"bereich": {$ne: "Entwicklung"}}, {"bereich": {$ne: "Gewinnung"}}
    ]}).count()

在 Robo 3T 中,我得到 6835 个结果,查询结果与之前返回空数组的查询完全相同。此查询的响应时间约为 0.248 秒,因此不应该是超时问题。

我在所有地方都记录了开始和结束,以确保它们正确传递,而且它们是正确的。我最大的问题(除了空数组)是运行它时我根本没有收到任何错误。我在另一个函数中做了几乎相同的工作,并且没有问题。

非常感谢任何有关可能导致此问题的建议。感谢您的宝贵时间!

【问题讨论】:

    标签: express mongodb-query


    【解决方案1】:

    找到了解决方案 - 传递给第二个查询的日期被视为字符串而不是整数。 parseInt() 解决了这个问题

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-11-15
      • 2021-02-05
      • 2021-07-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多