0

我有一堆文件,比如......

{
    _id : "abc",
    createdOn : ISODate( '2013-04-27T00:00:00.000Z' ),
    updatedOn : ISODate( '2013-04-27T00:00:00.000Z' )
},
{
    _id : "def",
    createdOn : ISODate( '2013-04-27T00:00:00.000Z' ),
    updatedOn : ISODate( '2013-04-27T00:11:11.111Z' )
}

当一个文档被插入到列表中时 createdOn 和 updatedOn 值是相等的。当一个文档存在时,只有 updatedOn 字段被更新。

我正在尝试编写查询以查找特定日期范围内的所有文档 updatedOn,但只需要那些 createdOn != updatedOn。到目前为止我得到的查询有效,但我讨厌它。我正在努力弄清楚如何在不直接使用 JavaScript 的情况下跨字段查询。这是我所拥有的:

startTime = ISODate( '2013-04-27T00:00:00.000Z' );
endTime = ISODate( '2013-04-27T01:00:00.000Z' );
db.profiles.find(
  { "updatedOn" : { $gte : startTime, $lt : endTime },
    $where : "obj.createdOn == null || obj.createdOn.getTime() != obj.updatedOn.getTime()"
  },
  {_id: 1, createdOn: 1, updatedOn: 1}
);

有没有更好的办法?就像避免 $where javascript 的东西,只是让我直接比较文档的 createdOn 和 updatedOn 字段。

4

0 回答 0