我有一堆文件,比如......
{
_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 字段。