Mongodb 在mongo for date字段中使用$gte和$lt运算符的结果错误

Mongodb 在mongo for date字段中使用$gte和$lt运算符的结果错误,mongodb,Mongodb,我是刚到mongo的,所以我希望我错过了一些简单的东西。我有28个文档,其值为create_timestamp- { "id" : NumberLong(96), "create_timestamp" : ISODate("2017-09-18T09:00:00Z") } { "id" : NumberLong(97), "create_timestamp" : ISODate("2017-09-20T15:37:51.575Z") } { "id" : NumberLong(104), "cr

我是刚到mongo的,所以我希望我错过了一些简单的东西。我有28个文档,其值为create_timestamp-

{ "id" : NumberLong(96), "create_timestamp" : ISODate("2017-09-18T09:00:00Z") }
{ "id" : NumberLong(97), "create_timestamp" : ISODate("2017-09-20T15:37:51.575Z") }
{ "id" : NumberLong(104), "create_timestamp" : ISODate("2017-09-20T15:37:51.575Z") }
{ "id" : NumberLong(106), "create_timestamp" : ISODate("2017-09-20T15:37:51.575Z") }
{ "id" : NumberLong(109), "create_timestamp" : ISODate("2017-09-20T15:37:51.575Z") }
{ "id" : NumberLong(110), "create_timestamp" : ISODate("2017-09-20T15:37:51.575Z") }
{ "id" : NumberLong(120), "create_timestamp" : ISODate("2017-09-20T15:37:51.575Z") }
{ "id" : NumberLong(121), "create_timestamp" : ISODate("2017-09-20T15:37:51.575Z") }
{ "id" : NumberLong(122), "create_timestamp" : ISODate("2017-09-20T15:37:51.575Z") }
{ "id" : NumberLong(124), "create_timestamp" : ISODate("2017-09-20T15:37:51.575Z") }
{ "id" : NumberLong(125), "create_timestamp" : ISODate("2017-09-20T15:37:51.575Z") }
{ "id" : NumberLong(126), "create_timestamp" : ISODate("2017-09-20T15:37:51.575Z") }
{ "id" : NumberLong(128), "create_timestamp" : ISODate("2017-09-20T15:37:51.575Z") }
{ "id" : NumberLong(129), "create_timestamp" : ISODate("2017-09-20T15:37:51.575Z") }
{ "id" : NumberLong(130), "create_timestamp" : ISODate("2017-09-20T15:37:51.575Z") }
{ "id" : NumberLong(132), "create_timestamp" : ISODate("2017-09-20T15:37:51.575Z") }
{ "id" : NumberLong(136), "create_timestamp" : ISODate("2017-09-20T15:37:51.575Z") }
{ "id" : NumberLong(140), "create_timestamp" : ISODate("2017-09-20T15:37:51.575Z") }
{ "id" : NumberLong(145), "create_timestamp" : ISODate("2017-09-20T15:37:51.575Z") }
{ "id" : NumberLong(150), "create_timestamp" : ISODate("2017-09-20T15:37:51.575Z") }
我正在查询create_timestamp>=ISODate(“2017-09-19”)和 创建时间戳 db.transfer_order.find({$and:[{“创建时间戳”:{$gte:ISODate(“2017-09-19”)},“创建时间戳”:{$lt:ISODate(“2017-09-20”)}},{{id:0,id:1,创建时间戳:1})


为什么会这样?为什么查询返回此文档?

您正在用第二个值覆盖第一个
create\u timestamp
键值

所以你实际上是在质疑

db.transfer_order.find( 
{ $and: [ {"create_timestamp": { $lt: ISODate("2017-09-20")}}]}, 
{id: 1, create_timestamp: 1})
当查询同一个键的多个值时,可以使用隐式anding

db.transfer_order.find( 
{"create_timestamp": { $gte: ISODate("2017-09-19"), $lt: ISODate("2017-09-20")}}, 
{id: 1, create_timestamp: 1})
使用显式anding

db.transfer_order.find( 
{ $and: [ {"create_timestamp": { $gte: ISODate("2017-09-19")}}, {"create_timestamp": { $lt: ISODate("2017-09-20")}}]}, 
{id: 1, create_timestamp: 1})
更多

db.transfer_order.find( 
{ $and: [ {"create_timestamp": { $gte: ISODate("2017-09-19")}}, {"create_timestamp": { $lt: ISODate("2017-09-20")}}]}, 
{id: 1, create_timestamp: 1})