我是MongoDB的新手,我遇到了查询问题。查询尝试查找2个DateTime值之间的所有文档。我以前能够使用所需的结果运行类似的查询,但是使用不同的数据库模式。通过对我当前的数据库模式应用相同的查询,查询不起作用。 查询如下:
var query =
(
from t in rdb.TimeStampsCollection.AsQueryable()
where t.dt > lowDate && t.dt < highDate
select t.rbt_List
);
rdb.TimeStampsCollection映射到名为TimeStamp的C#类。除了BSonObjectId之外,该类包含一个DateTime和一个名为RobotTimeStamps的类的对象列表。
public class TimeStamp
{
public BsonObjectId Id;
public DateTime dt;
public List<RobotTimeStamp> rbt_List;
public TimeStamp(DateTime date)
{
this.dt = date;
this.rbt_List = new List<RobotTimeStamp>();
}
}
public class RobotTimeStamp
{
public BsonObjectId Id;
public int robotID;
public int productionCellId;
public DateTime timeStamp;
public double p1;
public double p2;
public double p3;
public double q1;
public double q2;
public double q3;
public double s1;
public double s2;
public double s3;
public double pf1;
public double pf2;
public double pf3;
// constructor
}
所以我试图运行的查询不起作用。它永远不会从我的收藏中返回任何文件。目前,DateTime lowDate和highDate的精度为秒。有趣的是,如果我使用内置的DateTime设置DateTime。现在查询有效。
// Not working
DateTime lowDate = new DateTime(2015,3,26,22,27,0);
DateTime highDate = new DateTime(2015,3,26,22,30,0);
//working
DateTime lowDate = DateTime.Now.AddMinutes(-10);
DateTime highDate = DateTime.Now.AddMinutes(-1);
正如帖子开头所提到的,我之前已经能够通过如上所示设置DateTime值来获得所需的结果。但是,根据我当前的数据库结构,这不起作用。
答案 0 :(得分:0)
所以可能有更好的方法来解决这个问题,但这对我来说很有用。
DateTime ownLow = new DateTime(2015, 3, 28, 21, 28, 13, 0);
DateTime ownHigh = new DateTime(2015, 3, 28, 21, 28, 20, 0);
string stringLow = ownLow.ToString("yyyy-MM-ddTHH:mm:ss.fffffffZ");
string stringHigh = ownHigh.ToString("yyyy-MM-ddTHH:mm:ss.fffffffZ");
DateTime lowDate = Convert.ToDateTime(stringLow);
DateTime highDate = Convert.ToDateTime(stringHigh);
为了让我能够使用此查询,我必须创建DateTime,将其解析为字符串,然后将其转换回DateTime值。