我有很多文件,比如......
{
_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,但只想要那些创建了On!= 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}
);
有更好的方法吗?喜欢避免$ javascript事物的东西,只是让我直接比较文档的createdOn和updatedOn字段。