MongoDb查找中有多个$和$或

MongoDb查找中有多个$和$或,mongodb,mongodb-query,Mongodb,Mongodb Query,我有一个疑问,我搞不懂。该查询不返回任何内容: const read = await db.collection("action_traces") .find( { $and: [ { $or: [ {"receipt.receiver": "newdexpocket"}, {"act.account": "newdexpocket"} ] },

我有一个疑问,我搞不懂。该查询不返回任何内容:

 const read = await db.collection("action_traces")
    .find(
      { $and: [
        { $or:
          [
            {"receipt.receiver": "newdexpocket"},
            {"act.account": "newdexpocket"}
          ]
        },
        { $and:
          [
            {"block_time":{ "$gte": "2018-10-02T00:00:00.000Z" } },
            {"block_time":{ "$lt": "2018-10-03T00:00:00.000Z" } }
          ]
        }
      ]
    })
鉴于以下请求返回了我想要的部分结果:

 const read = await db.collection("action_traces")
    .find(
    { $and: [
      { $or:
        [
          {"receipt.receiver": "newdexpocket"},
          {"act.account": "newdexpocket"}
        ]
      },
      {"block_time":{ "$lt": 2018-10-03T00:00:00.000Z } }
    ]
  })
问题很简单,如何删除早于
2018-10-02T00:00:00.000Z的文档?在我的第一个请求中,我做错了什么


首先非常感谢,

应该暗示批判性之间的
,下面的查询应该等同于您试图实现的目标(如果我理解正确的话)。请测试一下

db.collection("action_traces")
.find({ $or:[
        {"receipt.receiver": "newdexpocket"},
        {"act.account": "newdexpocket"}
      ],
     "block_time":{ "$gte": "2018-10-02T00:00:00.000Z" ,"$lt": "2018-10-03T00:00:00.000Z" } 
})

谢谢,至少您的查询正在运行,但它似乎在无休止地运行。当我查看日志时,它并不是无穷无尽的,但由于集合非常大(700gb),它似乎正在解析整个集合,因此可能它只考虑查询的
$gte
部分?仅供参考,我还在控制台中打印了查询,以确保这不是格式问题,但字符串是正确的。第一个查询(当它只是
$lt
时)大约在10秒钟内运行,而同时使用
$gte
$lt
的查询在几分钟后仍在运行(每次我都手动终止它)。有什么想法吗?它实际上在工作,我输入了两个额外的
{}
,所以工作不正常,但现在它是;-)问题解决了,谢谢你的回答:p