1

我正在运行一个相当简单的查询,我正在寻找特定时间范围内的任务快照计数。假设日期为 d1、d2 和 d3,其中 d1 < d2 < d3,我希望 d1(含)和 d2(不包括)之间的快照计数加上 d2(含)和 d3(不包括)之间的快照计数应等于 d1(含)和d3 独占。但是,我一直得到不同的计数...... d1 和 d3 之间的计数大于单个查询的总和。

---- 案例 1:01/13 – 01/15 输入

{
find:{
      "_TypeHierarchy":"Task",
      "_ValidFrom":{"$gte" : "2013-01-13T00:00:00.000Z"},
      "_ValidTo":  {"$lt"  : "2013-01-15T00:00:00.000Z"}},
fields:["_id","ObjectID","_SnapshotNumber","_ValidFrom","_ValidTo"],
pagesize:1
}

输出

"TotalResultCount": 559,

---- 案例 2:01/13 – 01/14 输入

{
find:{
      "_TypeHierarchy":"Task",
      "_ValidFrom":{"$gte" : "2013-01-13T00:00:00.000Z"},
      "_ValidTo":  {"$lt"  : "2013-01-14T00:00:00.000Z"}},
fields:["_id","ObjectID","_SnapshotNumber","_ValidFrom","_ValidTo"],
pagesize:1
}

输出

"TotalResultCount": 52,

---- 案例 3:01/14 – 01/15 输入

{
find:{
      "_TypeHierarchy":"Task",
      "_ValidFrom":{"$gte" : "2013-01-14T00:00:00.000Z"},
      "_ValidTo":  {"$lt"  : "2013-01-15T00:00:00.000Z"}},
fields:["_id","ObjectID","_SnapshotNumber","_ValidFrom","_ValidTo"],
pagesize:1
}

输出

"TotalResultCount": 498,
4

1 回答 1

2

在研究结果对象时,我现在看到了我的错误。如果要查找给定时间范围内的快照计数,则应在 _ValidFrom 子句中指定开始和结束时间以及不等式:

"_ValidFrom":{"$gte" : "2012-01-13T00:00:00.000Z", "$lt"  : "2012-01-14T00:00:00.000Z"}},

在原始问题中,案例 2 和案例 3 中的查询不包括 ValidFrom 在 d1 之后和 ValidTo 在 d2 之后但在 d3 之前的快照。但是第一种情况会。因此,案例 1 的总计数高于案例 2 和案例 3 的总和。

于 2013-02-07T04:37:39.530 回答